diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2014-10-10 07:23:11 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2014-10-10 07:23:11 -0400 |
commit | d9428f09763d307a6d2220c4bbb01d8fc5c55b52 (patch) | |
tree | be02ed22b6630d6a40706b2e09cc8b13fa3e3e7c /drivers/ata/libata-core.c | |
parent | 0cf744bc7ae8e0072159a901f6e1a159bbc30ffa (diff) | |
parent | 37017ac6849e772e67dd187ba2fbd056c4afa533 (diff) |
Merge branch 'for-3.18' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/libata
Pull libata update from Tejun Heo:
"AHCI is getting per-port irq handling and locks for better
scalability. The gain is not huge but measureable with multiple high
iops devices connected to the same host; however, the value of
threaded IRQ handling seems negligible for AHCI and it likely will
revert to non-threaded handling soon.
Another noteworthy change is George Spelvin's "libata: Un-break ATA
blacklist". During 3.17 devel cycle, the libata blacklist glob
matching got generalized and rewritten; unfortunately, the patch
forgot to swap arguments to match the new match function and ended up
breaking blacklist matching completely. It got noticed only a couple
days ago so it couldn't make for-3.17-fixes either. :(
Other than the above two, nothing too interesting - the usual cleanup
churns and device-specific changes"
* 'for-3.18' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/libata: (22 commits)
pata_serverworks: disable 64-KB DMA transfers on Broadcom OSB4 IDE Controller
libata: Un-break ATA blacklist
AHCI: Do not acquire ata_host::lock from single IRQ handler
AHCI: Optimize single IRQ interrupt processing
AHCI: Do not read HOST_IRQ_STAT reg in multi-MSI mode
AHCI: Make few function names more descriptive
AHCI: Move host activation code into ahci_host_activate()
AHCI: Move ahci_host_activate() function to libahci.c
AHCI: Pass SCSI host template as arg to ahci_host_activate()
ata: pata_imx: Use the SIMPLE_DEV_PM_OPS() macro
AHCI: Cleanup checking of multiple MSIs/SLM modes
libata-sff: Fix controllers with no ctl port
ahci_xgene: Fix the error print invalid resource for APM X-Gene SoC AHCI SATA Host Controller driver.
libata: change ata_<foo>_printk routines to return void
ata: qcom: Add device tree bindings information
ahci-platform: Bump max number of clocks to 5
ahci: ahci_p5wdh_workaround - constify DMI table
libahci_platform: Staticize ahci_platform_<en/dis>able_phys()
pata_platform: Remove useless irq_flags field
pata_of_platform: Remove "electra-ide" quirk
...
Diffstat (limited to 'drivers/ata/libata-core.c')
-rw-r--r-- | drivers/ata/libata-core.c | 41 |
1 files changed, 16 insertions, 25 deletions
diff --git a/drivers/ata/libata-core.c b/drivers/ata/libata-core.c index f3e7b9f894cd..c5ba15af87d3 100644 --- a/drivers/ata/libata-core.c +++ b/drivers/ata/libata-core.c | |||
@@ -4261,10 +4261,10 @@ static unsigned long ata_dev_blacklisted(const struct ata_device *dev) | |||
4261 | ata_id_c_string(dev->id, model_rev, ATA_ID_FW_REV, sizeof(model_rev)); | 4261 | ata_id_c_string(dev->id, model_rev, ATA_ID_FW_REV, sizeof(model_rev)); |
4262 | 4262 | ||
4263 | while (ad->model_num) { | 4263 | while (ad->model_num) { |
4264 | if (glob_match(model_num, ad->model_num)) { | 4264 | if (glob_match(ad->model_num, model_num)) { |
4265 | if (ad->model_rev == NULL) | 4265 | if (ad->model_rev == NULL) |
4266 | return ad->horkage; | 4266 | return ad->horkage; |
4267 | if (glob_match(model_rev, ad->model_rev)) | 4267 | if (glob_match(ad->model_rev, model_rev)) |
4268 | return ad->horkage; | 4268 | return ad->horkage; |
4269 | } | 4269 | } |
4270 | ad++; | 4270 | ad++; |
@@ -6227,7 +6227,7 @@ int ata_host_activate(struct ata_host *host, int irq, | |||
6227 | } | 6227 | } |
6228 | 6228 | ||
6229 | rc = devm_request_irq(host->dev, irq, irq_handler, irq_flags, | 6229 | rc = devm_request_irq(host->dev, irq, irq_handler, irq_flags, |
6230 | dev_driver_string(host->dev), host); | 6230 | dev_name(host->dev), host); |
6231 | if (rc) | 6231 | if (rc) |
6232 | return rc; | 6232 | return rc; |
6233 | 6233 | ||
@@ -6772,32 +6772,28 @@ const struct ata_port_info ata_dummy_port_info = { | |||
6772 | /* | 6772 | /* |
6773 | * Utility print functions | 6773 | * Utility print functions |
6774 | */ | 6774 | */ |
6775 | int ata_port_printk(const struct ata_port *ap, const char *level, | 6775 | void ata_port_printk(const struct ata_port *ap, const char *level, |
6776 | const char *fmt, ...) | 6776 | const char *fmt, ...) |
6777 | { | 6777 | { |
6778 | struct va_format vaf; | 6778 | struct va_format vaf; |
6779 | va_list args; | 6779 | va_list args; |
6780 | int r; | ||
6781 | 6780 | ||
6782 | va_start(args, fmt); | 6781 | va_start(args, fmt); |
6783 | 6782 | ||
6784 | vaf.fmt = fmt; | 6783 | vaf.fmt = fmt; |
6785 | vaf.va = &args; | 6784 | vaf.va = &args; |
6786 | 6785 | ||
6787 | r = printk("%sata%u: %pV", level, ap->print_id, &vaf); | 6786 | printk("%sata%u: %pV", level, ap->print_id, &vaf); |
6788 | 6787 | ||
6789 | va_end(args); | 6788 | va_end(args); |
6790 | |||
6791 | return r; | ||
6792 | } | 6789 | } |
6793 | EXPORT_SYMBOL(ata_port_printk); | 6790 | EXPORT_SYMBOL(ata_port_printk); |
6794 | 6791 | ||
6795 | int ata_link_printk(const struct ata_link *link, const char *level, | 6792 | void ata_link_printk(const struct ata_link *link, const char *level, |
6796 | const char *fmt, ...) | 6793 | const char *fmt, ...) |
6797 | { | 6794 | { |
6798 | struct va_format vaf; | 6795 | struct va_format vaf; |
6799 | va_list args; | 6796 | va_list args; |
6800 | int r; | ||
6801 | 6797 | ||
6802 | va_start(args, fmt); | 6798 | va_start(args, fmt); |
6803 | 6799 | ||
@@ -6805,37 +6801,32 @@ int ata_link_printk(const struct ata_link *link, const char *level, | |||
6805 | vaf.va = &args; | 6801 | vaf.va = &args; |
6806 | 6802 | ||
6807 | if (sata_pmp_attached(link->ap) || link->ap->slave_link) | 6803 | if (sata_pmp_attached(link->ap) || link->ap->slave_link) |
6808 | r = printk("%sata%u.%02u: %pV", | 6804 | printk("%sata%u.%02u: %pV", |
6809 | level, link->ap->print_id, link->pmp, &vaf); | 6805 | level, link->ap->print_id, link->pmp, &vaf); |
6810 | else | 6806 | else |
6811 | r = printk("%sata%u: %pV", | 6807 | printk("%sata%u: %pV", |
6812 | level, link->ap->print_id, &vaf); | 6808 | level, link->ap->print_id, &vaf); |
6813 | 6809 | ||
6814 | va_end(args); | 6810 | va_end(args); |
6815 | |||
6816 | return r; | ||
6817 | } | 6811 | } |
6818 | EXPORT_SYMBOL(ata_link_printk); | 6812 | EXPORT_SYMBOL(ata_link_printk); |
6819 | 6813 | ||
6820 | int ata_dev_printk(const struct ata_device *dev, const char *level, | 6814 | void ata_dev_printk(const struct ata_device *dev, const char *level, |
6821 | const char *fmt, ...) | 6815 | const char *fmt, ...) |
6822 | { | 6816 | { |
6823 | struct va_format vaf; | 6817 | struct va_format vaf; |
6824 | va_list args; | 6818 | va_list args; |
6825 | int r; | ||
6826 | 6819 | ||
6827 | va_start(args, fmt); | 6820 | va_start(args, fmt); |
6828 | 6821 | ||
6829 | vaf.fmt = fmt; | 6822 | vaf.fmt = fmt; |
6830 | vaf.va = &args; | 6823 | vaf.va = &args; |
6831 | 6824 | ||
6832 | r = printk("%sata%u.%02u: %pV", | 6825 | printk("%sata%u.%02u: %pV", |
6833 | level, dev->link->ap->print_id, dev->link->pmp + dev->devno, | 6826 | level, dev->link->ap->print_id, dev->link->pmp + dev->devno, |
6834 | &vaf); | 6827 | &vaf); |
6835 | 6828 | ||
6836 | va_end(args); | 6829 | va_end(args); |
6837 | |||
6838 | return r; | ||
6839 | } | 6830 | } |
6840 | EXPORT_SYMBOL(ata_dev_printk); | 6831 | EXPORT_SYMBOL(ata_dev_printk); |
6841 | 6832 | ||