Loading drivers/scsi/ahci.c +21 −31 Original line number Original line Diff line number Diff line Loading @@ -189,7 +189,6 @@ static void ahci_irq_clear(struct ata_port *ap); static void ahci_eng_timeout(struct ata_port *ap); static void ahci_eng_timeout(struct ata_port *ap); static int ahci_port_start(struct ata_port *ap); static int ahci_port_start(struct ata_port *ap); static void ahci_port_stop(struct ata_port *ap); static void ahci_port_stop(struct ata_port *ap); static void ahci_host_stop(struct ata_host_set *host_set); static void ahci_tf_read(struct ata_port *ap, struct ata_taskfile *tf); static void ahci_tf_read(struct ata_port *ap, struct ata_taskfile *tf); static void ahci_qc_prep(struct ata_queued_cmd *qc); static void ahci_qc_prep(struct ata_queued_cmd *qc); static u8 ahci_check_status(struct ata_port *ap); static u8 ahci_check_status(struct ata_port *ap); Loading Loading @@ -242,7 +241,6 @@ static struct ata_port_operations ahci_ops = { .port_start = ahci_port_start, .port_start = ahci_port_start, .port_stop = ahci_port_stop, .port_stop = ahci_port_stop, .host_stop = ahci_host_stop, }; }; static struct ata_port_info ahci_port_info[] = { static struct ata_port_info ahci_port_info[] = { Loading Loading @@ -296,17 +294,9 @@ static inline unsigned long ahci_port_base_ul (unsigned long base, unsigned int return base + 0x100 + (port * 0x80); return base + 0x100 + (port * 0x80); } } static inline void *ahci_port_base (void *base, unsigned int port) static inline void __iomem *ahci_port_base (void __iomem *base, unsigned int port) { { return (void *) ahci_port_base_ul((unsigned long)base, port); return (void __iomem *) ahci_port_base_ul((unsigned long)base, port); } static void ahci_host_stop(struct ata_host_set *host_set) { struct ahci_host_priv *hpriv = host_set->private_data; kfree(hpriv); ata_host_stop(host_set); } } static int ahci_port_start(struct ata_port *ap) static int ahci_port_start(struct ata_port *ap) Loading @@ -314,8 +304,9 @@ static int ahci_port_start(struct ata_port *ap) struct device *dev = ap->host_set->dev; struct device *dev = ap->host_set->dev; struct ahci_host_priv *hpriv = ap->host_set->private_data; struct ahci_host_priv *hpriv = ap->host_set->private_data; struct ahci_port_priv *pp; struct ahci_port_priv *pp; void *mem, *mmio = ap->host_set->mmio_base; void __iomem *mmio = ap->host_set->mmio_base; void *port_mmio = ahci_port_base(mmio, ap->port_no); void __iomem *port_mmio = ahci_port_base(mmio, ap->port_no); void *mem; dma_addr_t mem_dma; dma_addr_t mem_dma; pp = kmalloc(sizeof(*pp), GFP_KERNEL); pp = kmalloc(sizeof(*pp), GFP_KERNEL); Loading Loading @@ -383,8 +374,8 @@ static void ahci_port_stop(struct ata_port *ap) { { struct device *dev = ap->host_set->dev; struct device *dev = ap->host_set->dev; struct ahci_port_priv *pp = ap->private_data; struct ahci_port_priv *pp = ap->private_data; void *mmio = ap->host_set->mmio_base; void __iomem *mmio = ap->host_set->mmio_base; void *port_mmio = ahci_port_base(mmio, ap->port_no); void __iomem *port_mmio = ahci_port_base(mmio, ap->port_no); u32 tmp; u32 tmp; tmp = readl(port_mmio + PORT_CMD); tmp = readl(port_mmio + PORT_CMD); Loading Loading @@ -546,8 +537,8 @@ static void ahci_qc_prep(struct ata_queued_cmd *qc) static void ahci_intr_error(struct ata_port *ap, u32 irq_stat) static void ahci_intr_error(struct ata_port *ap, u32 irq_stat) { { void *mmio = ap->host_set->mmio_base; void __iomem *mmio = ap->host_set->mmio_base; void *port_mmio = ahci_port_base(mmio, ap->port_no); void __iomem *port_mmio = ahci_port_base(mmio, ap->port_no); u32 tmp; u32 tmp; int work; int work; Loading Loading @@ -595,8 +586,8 @@ static void ahci_intr_error(struct ata_port *ap, u32 irq_stat) static void ahci_eng_timeout(struct ata_port *ap) static void ahci_eng_timeout(struct ata_port *ap) { { struct ata_host_set *host_set = ap->host_set; struct ata_host_set *host_set = ap->host_set; void *mmio = host_set->mmio_base; void __iomem *mmio = host_set->mmio_base; void *port_mmio = ahci_port_base(mmio, ap->port_no); void __iomem *port_mmio = ahci_port_base(mmio, ap->port_no); struct ata_queued_cmd *qc; struct ata_queued_cmd *qc; unsigned long flags; unsigned long flags; Loading Loading @@ -626,8 +617,8 @@ static void ahci_eng_timeout(struct ata_port *ap) static inline int ahci_host_intr(struct ata_port *ap, struct ata_queued_cmd *qc) static inline int ahci_host_intr(struct ata_port *ap, struct ata_queued_cmd *qc) { { void *mmio = ap->host_set->mmio_base; void __iomem *mmio = ap->host_set->mmio_base; void *port_mmio = ahci_port_base(mmio, ap->port_no); void __iomem *port_mmio = ahci_port_base(mmio, ap->port_no); u32 status, serr, ci; u32 status, serr, ci; serr = readl(port_mmio + PORT_SCR_ERR); serr = readl(port_mmio + PORT_SCR_ERR); Loading Loading @@ -663,7 +654,7 @@ static irqreturn_t ahci_interrupt (int irq, void *dev_instance, struct pt_regs * struct ata_host_set *host_set = dev_instance; struct ata_host_set *host_set = dev_instance; struct ahci_host_priv *hpriv; struct ahci_host_priv *hpriv; unsigned int i, handled = 0; unsigned int i, handled = 0; void *mmio; void __iomem *mmio; u32 irq_stat, irq_ack = 0; u32 irq_stat, irq_ack = 0; VPRINTK("ENTER\n"); VPRINTK("ENTER\n"); Loading Loading @@ -709,7 +700,7 @@ static irqreturn_t ahci_interrupt (int irq, void *dev_instance, struct pt_regs * static int ahci_qc_issue(struct ata_queued_cmd *qc) static int ahci_qc_issue(struct ata_queued_cmd *qc) { { struct ata_port *ap = qc->ap; struct ata_port *ap = qc->ap; void *port_mmio = (void *) ap->ioaddr.cmd_addr; void __iomem *port_mmio = (void __iomem *) ap->ioaddr.cmd_addr; writel(1, port_mmio + PORT_CMD_ISSUE); writel(1, port_mmio + PORT_CMD_ISSUE); readl(port_mmio + PORT_CMD_ISSUE); /* flush */ readl(port_mmio + PORT_CMD_ISSUE); /* flush */ Loading Loading @@ -894,7 +885,7 @@ static void ahci_print_info(struct ata_probe_ent *probe_ent) { { struct ahci_host_priv *hpriv = probe_ent->private_data; struct ahci_host_priv *hpriv = probe_ent->private_data; struct pci_dev *pdev = to_pci_dev(probe_ent->dev); struct pci_dev *pdev = to_pci_dev(probe_ent->dev); void *mmio = probe_ent->mmio_base; void __iomem *mmio = probe_ent->mmio_base; u32 vers, cap, impl, speed; u32 vers, cap, impl, speed; const char *speed_s; const char *speed_s; u16 cc; u16 cc; Loading Loading @@ -967,7 +958,7 @@ static int ahci_init_one (struct pci_dev *pdev, const struct pci_device_id *ent) struct ata_probe_ent *probe_ent = NULL; struct ata_probe_ent *probe_ent = NULL; struct ahci_host_priv *hpriv; struct ahci_host_priv *hpriv; unsigned long base; unsigned long base; void *mmio_base; void __iomem *mmio_base; unsigned int board_idx = (unsigned int) ent->driver_data; unsigned int board_idx = (unsigned int) ent->driver_data; int have_msi, pci_dev_busy = 0; int have_msi, pci_dev_busy = 0; int rc; int rc; Loading Loading @@ -1004,8 +995,7 @@ static int ahci_init_one (struct pci_dev *pdev, const struct pci_device_id *ent) probe_ent->dev = pci_dev_to_dev(pdev); probe_ent->dev = pci_dev_to_dev(pdev); INIT_LIST_HEAD(&probe_ent->node); INIT_LIST_HEAD(&probe_ent->node); mmio_base = ioremap(pci_resource_start(pdev, AHCI_PCI_BAR), mmio_base = pci_iomap(pdev, AHCI_PCI_BAR, 0); pci_resource_len(pdev, AHCI_PCI_BAR)); if (mmio_base == NULL) { if (mmio_base == NULL) { rc = -ENOMEM; rc = -ENOMEM; goto err_out_free_ent; goto err_out_free_ent; Loading Loading @@ -1049,7 +1039,7 @@ static int ahci_init_one (struct pci_dev *pdev, const struct pci_device_id *ent) err_out_hpriv: err_out_hpriv: kfree(hpriv); kfree(hpriv); err_out_iounmap: err_out_iounmap: iounmap(mmio_base); pci_iounmap(pdev, mmio_base); err_out_free_ent: err_out_free_ent: kfree(probe_ent); kfree(probe_ent); err_out_msi: err_out_msi: Loading Loading @@ -1089,7 +1079,8 @@ static void ahci_remove_one (struct pci_dev *pdev) scsi_host_put(ap->host); scsi_host_put(ap->host); } } host_set->ops->host_stop(host_set); kfree(hpriv); pci_iounmap(pdev, host_set->mmio_base); kfree(host_set); kfree(host_set); if (have_msi) if (have_msi) Loading @@ -1106,7 +1097,6 @@ static int __init ahci_init(void) return pci_module_init(&ahci_pci_driver); return pci_module_init(&ahci_pci_driver); } } static void __exit ahci_exit(void) static void __exit ahci_exit(void) { { pci_unregister_driver(&ahci_pci_driver); pci_unregister_driver(&ahci_pci_driver); Loading drivers/scsi/ata_piix.c +5 −6 Original line number Original line Diff line number Diff line Loading @@ -583,8 +583,7 @@ static void pci_enable_intx(struct pci_dev *pdev) #define AHCI_ENABLE (1 << 31) #define AHCI_ENABLE (1 << 31) static int piix_disable_ahci(struct pci_dev *pdev) static int piix_disable_ahci(struct pci_dev *pdev) { { void *mmio; void __iomem *mmio; unsigned long addr; u32 tmp; u32 tmp; int rc = 0; int rc = 0; Loading @@ -592,11 +591,11 @@ static int piix_disable_ahci(struct pci_dev *pdev) * works because this device is usually set up by BIOS. * works because this device is usually set up by BIOS. */ */ addr = pci_resource_start(pdev, AHCI_PCI_BAR); if (!pci_resource_start(pdev, AHCI_PCI_BAR) || if (!addr || !pci_resource_len(pdev, AHCI_PCI_BAR)) !pci_resource_len(pdev, AHCI_PCI_BAR)) return 0; return 0; mmio = ioremap(addr, 64); mmio = pci_iomap(pdev, AHCI_PCI_BAR, 64); if (!mmio) if (!mmio) return -ENOMEM; return -ENOMEM; Loading @@ -610,7 +609,7 @@ static int piix_disable_ahci(struct pci_dev *pdev) rc = -EIO; rc = -EIO; } } iounmap(mmio); pci_iounmap(pdev, mmio); return rc; return rc; } } Loading drivers/scsi/libata-core.c +14 −1 Original line number Original line Diff line number Diff line Loading @@ -75,6 +75,10 @@ static void __ata_qc_complete(struct ata_queued_cmd *qc); static unsigned int ata_unique_id = 1; static unsigned int ata_unique_id = 1; static struct workqueue_struct *ata_wq; static struct workqueue_struct *ata_wq; int atapi_enabled = 0; module_param(atapi_enabled, int, 0444); MODULE_PARM_DESC(atapi_enabled, "Enable discovery of ATAPI devices (0=off, 1=on)"); 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"); Loading Loading @@ -4200,6 +4204,15 @@ ata_probe_ent_alloc(struct device *dev, struct ata_port_info *port) #ifdef CONFIG_PCI void ata_pci_host_stop (struct ata_host_set *host_set) { struct pci_dev *pdev = to_pci_dev(host_set->dev); pci_iounmap(pdev, host_set->mmio_base); } /** /** * ata_pci_init_native_mode - Initialize native-mode driver * ata_pci_init_native_mode - Initialize native-mode driver * @pdev: pci device to be initialized * @pdev: pci device to be initialized Loading @@ -4212,7 +4225,6 @@ ata_probe_ent_alloc(struct device *dev, struct ata_port_info *port) * ata_probe_ent structure should then be freed with kfree(). * ata_probe_ent structure should then be freed with kfree(). */ */ #ifdef CONFIG_PCI struct ata_probe_ent * struct ata_probe_ent * ata_pci_init_native_mode(struct pci_dev *pdev, struct ata_port_info **port) ata_pci_init_native_mode(struct pci_dev *pdev, struct ata_port_info **port) { { Loading Loading @@ -4595,6 +4607,7 @@ EXPORT_SYMBOL_GPL(ata_scsi_simulate); #ifdef CONFIG_PCI #ifdef CONFIG_PCI EXPORT_SYMBOL_GPL(pci_test_config_bits); EXPORT_SYMBOL_GPL(pci_test_config_bits); EXPORT_SYMBOL_GPL(ata_pci_host_stop); EXPORT_SYMBOL_GPL(ata_pci_init_native_mode); EXPORT_SYMBOL_GPL(ata_pci_init_native_mode); EXPORT_SYMBOL_GPL(ata_pci_init_one); EXPORT_SYMBOL_GPL(ata_pci_init_one); EXPORT_SYMBOL_GPL(ata_pci_remove_one); EXPORT_SYMBOL_GPL(ata_pci_remove_one); Loading drivers/scsi/libata-scsi.c +4 −4 Original line number Original line Diff line number Diff line Loading @@ -1470,10 +1470,10 @@ ata_scsi_find_dev(struct ata_port *ap, struct scsi_device *scsidev) if (unlikely(!ata_dev_present(dev))) if (unlikely(!ata_dev_present(dev))) return NULL; return NULL; #ifndef ATA_ENABLE_ATAPI if (!atapi_enabled) { if (unlikely(dev->class == ATA_DEV_ATAPI)) if (unlikely(dev->class == ATA_DEV_ATAPI)) return NULL; return NULL; #endif } return dev; return dev; } } Loading drivers/scsi/libata.h +1 −0 Original line number Original line Diff line number Diff line Loading @@ -38,6 +38,7 @@ struct ata_scsi_args { }; }; /* libata-core.c */ /* libata-core.c */ extern int atapi_enabled; extern struct ata_queued_cmd *ata_qc_new_init(struct ata_port *ap, extern struct ata_queued_cmd *ata_qc_new_init(struct ata_port *ap, struct ata_device *dev); struct ata_device *dev); extern void ata_qc_free(struct ata_queued_cmd *qc); extern void ata_qc_free(struct ata_queued_cmd *qc); Loading Loading
drivers/scsi/ahci.c +21 −31 Original line number Original line Diff line number Diff line Loading @@ -189,7 +189,6 @@ static void ahci_irq_clear(struct ata_port *ap); static void ahci_eng_timeout(struct ata_port *ap); static void ahci_eng_timeout(struct ata_port *ap); static int ahci_port_start(struct ata_port *ap); static int ahci_port_start(struct ata_port *ap); static void ahci_port_stop(struct ata_port *ap); static void ahci_port_stop(struct ata_port *ap); static void ahci_host_stop(struct ata_host_set *host_set); static void ahci_tf_read(struct ata_port *ap, struct ata_taskfile *tf); static void ahci_tf_read(struct ata_port *ap, struct ata_taskfile *tf); static void ahci_qc_prep(struct ata_queued_cmd *qc); static void ahci_qc_prep(struct ata_queued_cmd *qc); static u8 ahci_check_status(struct ata_port *ap); static u8 ahci_check_status(struct ata_port *ap); Loading Loading @@ -242,7 +241,6 @@ static struct ata_port_operations ahci_ops = { .port_start = ahci_port_start, .port_start = ahci_port_start, .port_stop = ahci_port_stop, .port_stop = ahci_port_stop, .host_stop = ahci_host_stop, }; }; static struct ata_port_info ahci_port_info[] = { static struct ata_port_info ahci_port_info[] = { Loading Loading @@ -296,17 +294,9 @@ static inline unsigned long ahci_port_base_ul (unsigned long base, unsigned int return base + 0x100 + (port * 0x80); return base + 0x100 + (port * 0x80); } } static inline void *ahci_port_base (void *base, unsigned int port) static inline void __iomem *ahci_port_base (void __iomem *base, unsigned int port) { { return (void *) ahci_port_base_ul((unsigned long)base, port); return (void __iomem *) ahci_port_base_ul((unsigned long)base, port); } static void ahci_host_stop(struct ata_host_set *host_set) { struct ahci_host_priv *hpriv = host_set->private_data; kfree(hpriv); ata_host_stop(host_set); } } static int ahci_port_start(struct ata_port *ap) static int ahci_port_start(struct ata_port *ap) Loading @@ -314,8 +304,9 @@ static int ahci_port_start(struct ata_port *ap) struct device *dev = ap->host_set->dev; struct device *dev = ap->host_set->dev; struct ahci_host_priv *hpriv = ap->host_set->private_data; struct ahci_host_priv *hpriv = ap->host_set->private_data; struct ahci_port_priv *pp; struct ahci_port_priv *pp; void *mem, *mmio = ap->host_set->mmio_base; void __iomem *mmio = ap->host_set->mmio_base; void *port_mmio = ahci_port_base(mmio, ap->port_no); void __iomem *port_mmio = ahci_port_base(mmio, ap->port_no); void *mem; dma_addr_t mem_dma; dma_addr_t mem_dma; pp = kmalloc(sizeof(*pp), GFP_KERNEL); pp = kmalloc(sizeof(*pp), GFP_KERNEL); Loading Loading @@ -383,8 +374,8 @@ static void ahci_port_stop(struct ata_port *ap) { { struct device *dev = ap->host_set->dev; struct device *dev = ap->host_set->dev; struct ahci_port_priv *pp = ap->private_data; struct ahci_port_priv *pp = ap->private_data; void *mmio = ap->host_set->mmio_base; void __iomem *mmio = ap->host_set->mmio_base; void *port_mmio = ahci_port_base(mmio, ap->port_no); void __iomem *port_mmio = ahci_port_base(mmio, ap->port_no); u32 tmp; u32 tmp; tmp = readl(port_mmio + PORT_CMD); tmp = readl(port_mmio + PORT_CMD); Loading Loading @@ -546,8 +537,8 @@ static void ahci_qc_prep(struct ata_queued_cmd *qc) static void ahci_intr_error(struct ata_port *ap, u32 irq_stat) static void ahci_intr_error(struct ata_port *ap, u32 irq_stat) { { void *mmio = ap->host_set->mmio_base; void __iomem *mmio = ap->host_set->mmio_base; void *port_mmio = ahci_port_base(mmio, ap->port_no); void __iomem *port_mmio = ahci_port_base(mmio, ap->port_no); u32 tmp; u32 tmp; int work; int work; Loading Loading @@ -595,8 +586,8 @@ static void ahci_intr_error(struct ata_port *ap, u32 irq_stat) static void ahci_eng_timeout(struct ata_port *ap) static void ahci_eng_timeout(struct ata_port *ap) { { struct ata_host_set *host_set = ap->host_set; struct ata_host_set *host_set = ap->host_set; void *mmio = host_set->mmio_base; void __iomem *mmio = host_set->mmio_base; void *port_mmio = ahci_port_base(mmio, ap->port_no); void __iomem *port_mmio = ahci_port_base(mmio, ap->port_no); struct ata_queued_cmd *qc; struct ata_queued_cmd *qc; unsigned long flags; unsigned long flags; Loading Loading @@ -626,8 +617,8 @@ static void ahci_eng_timeout(struct ata_port *ap) static inline int ahci_host_intr(struct ata_port *ap, struct ata_queued_cmd *qc) static inline int ahci_host_intr(struct ata_port *ap, struct ata_queued_cmd *qc) { { void *mmio = ap->host_set->mmio_base; void __iomem *mmio = ap->host_set->mmio_base; void *port_mmio = ahci_port_base(mmio, ap->port_no); void __iomem *port_mmio = ahci_port_base(mmio, ap->port_no); u32 status, serr, ci; u32 status, serr, ci; serr = readl(port_mmio + PORT_SCR_ERR); serr = readl(port_mmio + PORT_SCR_ERR); Loading Loading @@ -663,7 +654,7 @@ static irqreturn_t ahci_interrupt (int irq, void *dev_instance, struct pt_regs * struct ata_host_set *host_set = dev_instance; struct ata_host_set *host_set = dev_instance; struct ahci_host_priv *hpriv; struct ahci_host_priv *hpriv; unsigned int i, handled = 0; unsigned int i, handled = 0; void *mmio; void __iomem *mmio; u32 irq_stat, irq_ack = 0; u32 irq_stat, irq_ack = 0; VPRINTK("ENTER\n"); VPRINTK("ENTER\n"); Loading Loading @@ -709,7 +700,7 @@ static irqreturn_t ahci_interrupt (int irq, void *dev_instance, struct pt_regs * static int ahci_qc_issue(struct ata_queued_cmd *qc) static int ahci_qc_issue(struct ata_queued_cmd *qc) { { struct ata_port *ap = qc->ap; struct ata_port *ap = qc->ap; void *port_mmio = (void *) ap->ioaddr.cmd_addr; void __iomem *port_mmio = (void __iomem *) ap->ioaddr.cmd_addr; writel(1, port_mmio + PORT_CMD_ISSUE); writel(1, port_mmio + PORT_CMD_ISSUE); readl(port_mmio + PORT_CMD_ISSUE); /* flush */ readl(port_mmio + PORT_CMD_ISSUE); /* flush */ Loading Loading @@ -894,7 +885,7 @@ static void ahci_print_info(struct ata_probe_ent *probe_ent) { { struct ahci_host_priv *hpriv = probe_ent->private_data; struct ahci_host_priv *hpriv = probe_ent->private_data; struct pci_dev *pdev = to_pci_dev(probe_ent->dev); struct pci_dev *pdev = to_pci_dev(probe_ent->dev); void *mmio = probe_ent->mmio_base; void __iomem *mmio = probe_ent->mmio_base; u32 vers, cap, impl, speed; u32 vers, cap, impl, speed; const char *speed_s; const char *speed_s; u16 cc; u16 cc; Loading Loading @@ -967,7 +958,7 @@ static int ahci_init_one (struct pci_dev *pdev, const struct pci_device_id *ent) struct ata_probe_ent *probe_ent = NULL; struct ata_probe_ent *probe_ent = NULL; struct ahci_host_priv *hpriv; struct ahci_host_priv *hpriv; unsigned long base; unsigned long base; void *mmio_base; void __iomem *mmio_base; unsigned int board_idx = (unsigned int) ent->driver_data; unsigned int board_idx = (unsigned int) ent->driver_data; int have_msi, pci_dev_busy = 0; int have_msi, pci_dev_busy = 0; int rc; int rc; Loading Loading @@ -1004,8 +995,7 @@ static int ahci_init_one (struct pci_dev *pdev, const struct pci_device_id *ent) probe_ent->dev = pci_dev_to_dev(pdev); probe_ent->dev = pci_dev_to_dev(pdev); INIT_LIST_HEAD(&probe_ent->node); INIT_LIST_HEAD(&probe_ent->node); mmio_base = ioremap(pci_resource_start(pdev, AHCI_PCI_BAR), mmio_base = pci_iomap(pdev, AHCI_PCI_BAR, 0); pci_resource_len(pdev, AHCI_PCI_BAR)); if (mmio_base == NULL) { if (mmio_base == NULL) { rc = -ENOMEM; rc = -ENOMEM; goto err_out_free_ent; goto err_out_free_ent; Loading Loading @@ -1049,7 +1039,7 @@ static int ahci_init_one (struct pci_dev *pdev, const struct pci_device_id *ent) err_out_hpriv: err_out_hpriv: kfree(hpriv); kfree(hpriv); err_out_iounmap: err_out_iounmap: iounmap(mmio_base); pci_iounmap(pdev, mmio_base); err_out_free_ent: err_out_free_ent: kfree(probe_ent); kfree(probe_ent); err_out_msi: err_out_msi: Loading Loading @@ -1089,7 +1079,8 @@ static void ahci_remove_one (struct pci_dev *pdev) scsi_host_put(ap->host); scsi_host_put(ap->host); } } host_set->ops->host_stop(host_set); kfree(hpriv); pci_iounmap(pdev, host_set->mmio_base); kfree(host_set); kfree(host_set); if (have_msi) if (have_msi) Loading @@ -1106,7 +1097,6 @@ static int __init ahci_init(void) return pci_module_init(&ahci_pci_driver); return pci_module_init(&ahci_pci_driver); } } static void __exit ahci_exit(void) static void __exit ahci_exit(void) { { pci_unregister_driver(&ahci_pci_driver); pci_unregister_driver(&ahci_pci_driver); Loading
drivers/scsi/ata_piix.c +5 −6 Original line number Original line Diff line number Diff line Loading @@ -583,8 +583,7 @@ static void pci_enable_intx(struct pci_dev *pdev) #define AHCI_ENABLE (1 << 31) #define AHCI_ENABLE (1 << 31) static int piix_disable_ahci(struct pci_dev *pdev) static int piix_disable_ahci(struct pci_dev *pdev) { { void *mmio; void __iomem *mmio; unsigned long addr; u32 tmp; u32 tmp; int rc = 0; int rc = 0; Loading @@ -592,11 +591,11 @@ static int piix_disable_ahci(struct pci_dev *pdev) * works because this device is usually set up by BIOS. * works because this device is usually set up by BIOS. */ */ addr = pci_resource_start(pdev, AHCI_PCI_BAR); if (!pci_resource_start(pdev, AHCI_PCI_BAR) || if (!addr || !pci_resource_len(pdev, AHCI_PCI_BAR)) !pci_resource_len(pdev, AHCI_PCI_BAR)) return 0; return 0; mmio = ioremap(addr, 64); mmio = pci_iomap(pdev, AHCI_PCI_BAR, 64); if (!mmio) if (!mmio) return -ENOMEM; return -ENOMEM; Loading @@ -610,7 +609,7 @@ static int piix_disable_ahci(struct pci_dev *pdev) rc = -EIO; rc = -EIO; } } iounmap(mmio); pci_iounmap(pdev, mmio); return rc; return rc; } } Loading
drivers/scsi/libata-core.c +14 −1 Original line number Original line Diff line number Diff line Loading @@ -75,6 +75,10 @@ static void __ata_qc_complete(struct ata_queued_cmd *qc); static unsigned int ata_unique_id = 1; static unsigned int ata_unique_id = 1; static struct workqueue_struct *ata_wq; static struct workqueue_struct *ata_wq; int atapi_enabled = 0; module_param(atapi_enabled, int, 0444); MODULE_PARM_DESC(atapi_enabled, "Enable discovery of ATAPI devices (0=off, 1=on)"); 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"); Loading Loading @@ -4200,6 +4204,15 @@ ata_probe_ent_alloc(struct device *dev, struct ata_port_info *port) #ifdef CONFIG_PCI void ata_pci_host_stop (struct ata_host_set *host_set) { struct pci_dev *pdev = to_pci_dev(host_set->dev); pci_iounmap(pdev, host_set->mmio_base); } /** /** * ata_pci_init_native_mode - Initialize native-mode driver * ata_pci_init_native_mode - Initialize native-mode driver * @pdev: pci device to be initialized * @pdev: pci device to be initialized Loading @@ -4212,7 +4225,6 @@ ata_probe_ent_alloc(struct device *dev, struct ata_port_info *port) * ata_probe_ent structure should then be freed with kfree(). * ata_probe_ent structure should then be freed with kfree(). */ */ #ifdef CONFIG_PCI struct ata_probe_ent * struct ata_probe_ent * ata_pci_init_native_mode(struct pci_dev *pdev, struct ata_port_info **port) ata_pci_init_native_mode(struct pci_dev *pdev, struct ata_port_info **port) { { Loading Loading @@ -4595,6 +4607,7 @@ EXPORT_SYMBOL_GPL(ata_scsi_simulate); #ifdef CONFIG_PCI #ifdef CONFIG_PCI EXPORT_SYMBOL_GPL(pci_test_config_bits); EXPORT_SYMBOL_GPL(pci_test_config_bits); EXPORT_SYMBOL_GPL(ata_pci_host_stop); EXPORT_SYMBOL_GPL(ata_pci_init_native_mode); EXPORT_SYMBOL_GPL(ata_pci_init_native_mode); EXPORT_SYMBOL_GPL(ata_pci_init_one); EXPORT_SYMBOL_GPL(ata_pci_init_one); EXPORT_SYMBOL_GPL(ata_pci_remove_one); EXPORT_SYMBOL_GPL(ata_pci_remove_one); Loading
drivers/scsi/libata-scsi.c +4 −4 Original line number Original line Diff line number Diff line Loading @@ -1470,10 +1470,10 @@ ata_scsi_find_dev(struct ata_port *ap, struct scsi_device *scsidev) if (unlikely(!ata_dev_present(dev))) if (unlikely(!ata_dev_present(dev))) return NULL; return NULL; #ifndef ATA_ENABLE_ATAPI if (!atapi_enabled) { if (unlikely(dev->class == ATA_DEV_ATAPI)) if (unlikely(dev->class == ATA_DEV_ATAPI)) return NULL; return NULL; #endif } return dev; return dev; } } Loading
drivers/scsi/libata.h +1 −0 Original line number Original line Diff line number Diff line Loading @@ -38,6 +38,7 @@ struct ata_scsi_args { }; }; /* libata-core.c */ /* libata-core.c */ extern int atapi_enabled; extern struct ata_queued_cmd *ata_qc_new_init(struct ata_port *ap, extern struct ata_queued_cmd *ata_qc_new_init(struct ata_port *ap, struct ata_device *dev); struct ata_device *dev); extern void ata_qc_free(struct ata_queued_cmd *qc); extern void ata_qc_free(struct ata_queued_cmd *qc); Loading