Merge branch 'upstream-linus' of master.kernel.org:/pub/scm/linux/kernel/git/jgarzik/libata-dev
* 'upstream-linus' of master.kernel.org:/pub/scm/linux/kernel/git/jgarzik/libata-dev: sata_via: pcim_iomap_regions() conversion missed BAR5 libata: remove libata.spindown_compat sata_nv: fix fallout of devres conversion drivers/ata: remove the wildcard from sata_nv driver
This commit is contained in:
@@ -328,21 +328,20 @@ Who: Adrian Bunk <bunk@stusta.de>
|
|||||||
|
|
||||||
---------------------------
|
---------------------------
|
||||||
|
|
||||||
What: libata.spindown_compat module parameter
|
What: libata spindown skipping and warning
|
||||||
When: Dec 2008
|
When: Dec 2008
|
||||||
Why: halt(8) synchronizes caches for and spins down libata disks
|
Why: Some halt(8) implementations synchronize caches for and spin
|
||||||
because libata didn't use to spin down disk on system halt
|
down libata disks because libata didn't use to spin down disk on
|
||||||
(only synchronized caches).
|
system halt (only synchronized caches).
|
||||||
Spin down on system halt is now implemented and can be tested
|
Spin down on system halt is now implemented. sysfs node
|
||||||
using sysfs node /sys/class/scsi_disk/h:c:i:l/manage_start_stop.
|
/sys/class/scsi_disk/h:c:i:l/manage_start_stop is present if
|
||||||
|
spin down support is available.
|
||||||
Because issuing spin down command to an already spun down disk
|
Because issuing spin down command to an already spun down disk
|
||||||
makes some disks spin up just to spin down again, the old
|
makes some disks spin up just to spin down again, libata tracks
|
||||||
behavior needs to be maintained till userspace tool is updated
|
device spindown status to skip the extra spindown command and
|
||||||
to check the sysfs node and not to spin down disks with the
|
warn about it.
|
||||||
node set to one.
|
This is to give userspace tools the time to get updated and will
|
||||||
This module parameter is to give userspace tool the time to
|
be removed after userspace is reasonably updated.
|
||||||
get updated and should be removed after userspace is
|
|
||||||
reasonably updated.
|
|
||||||
Who: Tejun Heo <htejun@gmail.com>
|
Who: Tejun Heo <htejun@gmail.com>
|
||||||
|
|
||||||
---------------------------
|
---------------------------
|
||||||
|
@@ -101,12 +101,6 @@ int libata_noacpi = 1;
|
|||||||
module_param_named(noacpi, libata_noacpi, int, 0444);
|
module_param_named(noacpi, libata_noacpi, int, 0444);
|
||||||
MODULE_PARM_DESC(noacpi, "Disables the use of ACPI in suspend/resume when set");
|
MODULE_PARM_DESC(noacpi, "Disables the use of ACPI in suspend/resume when set");
|
||||||
|
|
||||||
int ata_spindown_compat = 1;
|
|
||||||
module_param_named(spindown_compat, ata_spindown_compat, int, 0644);
|
|
||||||
MODULE_PARM_DESC(spindown_compat, "Enable backward compatible spindown "
|
|
||||||
"behavior. Will be removed. More info can be found in "
|
|
||||||
"Documentation/feature-removal-schedule.txt\n");
|
|
||||||
|
|
||||||
MODULE_AUTHOR("Jeff Garzik");
|
MODULE_AUTHOR("Jeff Garzik");
|
||||||
MODULE_DESCRIPTION("Library module for ATA devices");
|
MODULE_DESCRIPTION("Library module for ATA devices");
|
||||||
MODULE_LICENSE("GPL");
|
MODULE_LICENSE("GPL");
|
||||||
|
@@ -893,7 +893,7 @@ int ata_scsi_change_queue_depth(struct scsi_device *sdev, int queue_depth)
|
|||||||
return queue_depth;
|
return queue_depth;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* XXX: for ata_spindown_compat */
|
/* XXX: for spindown warning */
|
||||||
static void ata_delayed_done_timerfn(unsigned long arg)
|
static void ata_delayed_done_timerfn(unsigned long arg)
|
||||||
{
|
{
|
||||||
struct scsi_cmnd *scmd = (void *)arg;
|
struct scsi_cmnd *scmd = (void *)arg;
|
||||||
@@ -901,7 +901,7 @@ static void ata_delayed_done_timerfn(unsigned long arg)
|
|||||||
scmd->scsi_done(scmd);
|
scmd->scsi_done(scmd);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* XXX: for ata_spindown_compat */
|
/* XXX: for spindown warning */
|
||||||
static void ata_delayed_done(struct scsi_cmnd *scmd)
|
static void ata_delayed_done(struct scsi_cmnd *scmd)
|
||||||
{
|
{
|
||||||
static struct timer_list timer;
|
static struct timer_list timer;
|
||||||
@@ -966,8 +966,7 @@ static unsigned int ata_scsi_start_stop_xlat(struct ata_queued_cmd *qc)
|
|||||||
* removed. Read Documentation/feature-removal-schedule.txt
|
* removed. Read Documentation/feature-removal-schedule.txt
|
||||||
* for more info.
|
* for more info.
|
||||||
*/
|
*/
|
||||||
if (ata_spindown_compat &&
|
if ((qc->dev->flags & ATA_DFLAG_SPUNDOWN) &&
|
||||||
(qc->dev->flags & ATA_DFLAG_SPUNDOWN) &&
|
|
||||||
(system_state == SYSTEM_HALT ||
|
(system_state == SYSTEM_HALT ||
|
||||||
system_state == SYSTEM_POWER_OFF)) {
|
system_state == SYSTEM_POWER_OFF)) {
|
||||||
static unsigned long warned = 0;
|
static unsigned long warned = 0;
|
||||||
@@ -1395,7 +1394,7 @@ static void ata_scsi_qc_complete(struct ata_queued_cmd *qc)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* XXX: track spindown state for spindown_compat */
|
/* XXX: track spindown state for spindown skipping and warning */
|
||||||
if (unlikely(qc->tf.command == ATA_CMD_STANDBY ||
|
if (unlikely(qc->tf.command == ATA_CMD_STANDBY ||
|
||||||
qc->tf.command == ATA_CMD_STANDBYNOW1))
|
qc->tf.command == ATA_CMD_STANDBYNOW1))
|
||||||
qc->dev->flags |= ATA_DFLAG_SPUNDOWN;
|
qc->dev->flags |= ATA_DFLAG_SPUNDOWN;
|
||||||
|
@@ -58,7 +58,6 @@ extern int atapi_enabled;
|
|||||||
extern int atapi_dmadir;
|
extern int atapi_dmadir;
|
||||||
extern int libata_fua;
|
extern int libata_fua;
|
||||||
extern int libata_noacpi;
|
extern int libata_noacpi;
|
||||||
extern int ata_spindown_compat;
|
|
||||||
extern struct ata_queued_cmd *ata_qc_new_init(struct ata_device *dev);
|
extern struct ata_queued_cmd *ata_qc_new_init(struct ata_device *dev);
|
||||||
extern int ata_build_rw_tf(struct ata_taskfile *tf, struct ata_device *dev,
|
extern int ata_build_rw_tf(struct ata_taskfile *tf, struct ata_device *dev,
|
||||||
u64 block, u32 n_block, unsigned int tf_flags,
|
u64 block, u32 n_block, unsigned int tf_flags,
|
||||||
|
@@ -229,7 +229,6 @@ struct nv_host_priv {
|
|||||||
#define NV_ADMA_CHECK_INTR(GCTL, PORT) ((GCTL) & ( 1 << (19 + (12 * (PORT)))))
|
#define NV_ADMA_CHECK_INTR(GCTL, PORT) ((GCTL) & ( 1 << (19 + (12 * (PORT)))))
|
||||||
|
|
||||||
static int nv_init_one (struct pci_dev *pdev, const struct pci_device_id *ent);
|
static int nv_init_one (struct pci_dev *pdev, const struct pci_device_id *ent);
|
||||||
static void nv_remove_one (struct pci_dev *pdev);
|
|
||||||
#ifdef CONFIG_PM
|
#ifdef CONFIG_PM
|
||||||
static int nv_pci_device_resume(struct pci_dev *pdev);
|
static int nv_pci_device_resume(struct pci_dev *pdev);
|
||||||
#endif
|
#endif
|
||||||
@@ -288,12 +287,6 @@ static const struct pci_device_id nv_pci_tbl[] = {
|
|||||||
{ PCI_VDEVICE(NVIDIA, PCI_DEVICE_ID_NVIDIA_NFORCE_MCP61_SATA), GENERIC },
|
{ PCI_VDEVICE(NVIDIA, PCI_DEVICE_ID_NVIDIA_NFORCE_MCP61_SATA), GENERIC },
|
||||||
{ PCI_VDEVICE(NVIDIA, PCI_DEVICE_ID_NVIDIA_NFORCE_MCP61_SATA2), GENERIC },
|
{ PCI_VDEVICE(NVIDIA, PCI_DEVICE_ID_NVIDIA_NFORCE_MCP61_SATA2), GENERIC },
|
||||||
{ PCI_VDEVICE(NVIDIA, PCI_DEVICE_ID_NVIDIA_NFORCE_MCP61_SATA3), GENERIC },
|
{ PCI_VDEVICE(NVIDIA, PCI_DEVICE_ID_NVIDIA_NFORCE_MCP61_SATA3), GENERIC },
|
||||||
{ PCI_VENDOR_ID_NVIDIA, PCI_ANY_ID,
|
|
||||||
PCI_ANY_ID, PCI_ANY_ID,
|
|
||||||
PCI_CLASS_STORAGE_IDE<<8, 0xffff00, GENERIC },
|
|
||||||
{ PCI_VENDOR_ID_NVIDIA, PCI_ANY_ID,
|
|
||||||
PCI_ANY_ID, PCI_ANY_ID,
|
|
||||||
PCI_CLASS_STORAGE_RAID<<8, 0xffff00, GENERIC },
|
|
||||||
|
|
||||||
{ } /* terminate list */
|
{ } /* terminate list */
|
||||||
};
|
};
|
||||||
@@ -306,7 +299,7 @@ static struct pci_driver nv_pci_driver = {
|
|||||||
.suspend = ata_pci_device_suspend,
|
.suspend = ata_pci_device_suspend,
|
||||||
.resume = nv_pci_device_resume,
|
.resume = nv_pci_device_resume,
|
||||||
#endif
|
#endif
|
||||||
.remove = nv_remove_one,
|
.remove = ata_pci_remove_one,
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct scsi_host_template nv_sht = {
|
static struct scsi_host_template nv_sht = {
|
||||||
@@ -1613,15 +1606,6 @@ static int nv_init_one (struct pci_dev *pdev, const struct pci_device_id *ent)
|
|||||||
IRQF_SHARED, ppi[0]->sht);
|
IRQF_SHARED, ppi[0]->sht);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void nv_remove_one (struct pci_dev *pdev)
|
|
||||||
{
|
|
||||||
struct ata_host *host = dev_get_drvdata(&pdev->dev);
|
|
||||||
struct nv_host_priv *hpriv = host->private_data;
|
|
||||||
|
|
||||||
ata_pci_remove_one(pdev);
|
|
||||||
kfree(hpriv);
|
|
||||||
}
|
|
||||||
|
|
||||||
#ifdef CONFIG_PM
|
#ifdef CONFIG_PM
|
||||||
static int nv_pci_device_resume(struct pci_dev *pdev)
|
static int nv_pci_device_resume(struct pci_dev *pdev)
|
||||||
{
|
{
|
||||||
|
@@ -441,7 +441,7 @@ static int vt6421_prepare_host(struct pci_dev *pdev, struct ata_host **r_host)
|
|||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
}
|
}
|
||||||
|
|
||||||
rc = pcim_iomap_regions(pdev, 0x1f, DRV_NAME);
|
rc = pcim_iomap_regions(pdev, 0x3f, DRV_NAME);
|
||||||
if (rc) {
|
if (rc) {
|
||||||
dev_printk(KERN_ERR, &pdev->dev, "failed to request/iomap "
|
dev_printk(KERN_ERR, &pdev->dev, "failed to request/iomap "
|
||||||
"PCI BARs (errno=%d)\n", rc);
|
"PCI BARs (errno=%d)\n", rc);
|
||||||
|
Reference in New Issue
Block a user