/* * Support for SATA devices on Serial Attached SCSI (SAS) controllers * * Copyright (C) 2006 IBM Corporation * * Written by: Darrick J. Wong , IBM Corporation * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License as * published by the Free Software Foundation; either version 2 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 * USA * */ #ifndef _SAS_ATA_H_ #define _SAS_ATA_H_ #include #include #ifdef CONFIG_SCSI_SAS_ATA static inline int dev_is_sata(struct domain_device *dev) { return dev->dev_type == SAS_SATA_DEV || dev->dev_type == SAS_SATA_PM || dev->dev_type == SAS_SATA_PM_PORT || dev->dev_type == SAS_SATA_PENDING; } int sas_get_ata_info(struct domain_device *dev, struct ex_phy *phy); int sas_ata_init(struct domain_device *dev); void sas_ata_task_abort(struct sas_task *task); void sas_ata_strategy_handler(struct Scsi_Host *shost); void sas_ata_eh(struct Scsi_Host *shost, struct list_head *work_q, struct list_head *done_q); void sas_ata_schedule_reset(struct domain_device *dev); void sas_ata_wait_eh(struct domain_device *dev); void sas_probe_sata(struct asd_sas_port *port); void sas_suspend_sata(struct asd_sas_port *port); void sas_resume_sata(struct asd_sas_port *port); void sas_ata_end_eh(struct ata_port *ap); #else static inline int dev_is_sata(struct domain_device *dev) { return 0; } static inline int sas_ata_init(struct domain_device *dev) { return 0; } static inline void sas_ata_task_abort(struct sas_task *task) { } static inline void sas_ata_strategy_handler(struct Scsi_Host *shost) { } static inline void sas_ata_eh(struct Scsi_Host *shost, struct list_head *work_q, struct list_head *done_q) { } static inline void sas_ata_schedule_reset(struct domain_device *dev) { } static inline void sas_ata_wait_eh(struct domain_device *dev) { } static inline void sas_probe_sata(struct asd_sas_port *port) { } static inline void sas_suspend_sata(struct asd_sas_port *port) { } static inline void sas_resume_sata(struct asd_sas_port *port) { } static inline int sas_get_ata_info(struct domain_device *dev, struct ex_phy *phy) { return 0; } static inline void sas_ata_end_eh(struct ata_port *ap) { } #endif #endif /* _SAS_ATA_H_ */ lue='range'>range
diff options
context:
space:
mode:
authorChristoph Hellwig <hch@lst.de>2017-01-30 13:15:41 +0100
committerBjorn Helgaas <bhelgaas@google.com>2017-02-02 10:35:46 -0600
commitdfef358bd1beb4e7b5c94eca944be9cd23dfc752 (patch)
treeb9a2afb38a4c2ac8ad31f49ec0d71fe9e5b1994c /include/uapi/asm-generic/signal.h
parent030305d69fc6963c16003f50d7e8d74b02d0a143 (diff)
PCI/MSI: Don't apply affinity if there aren't enough vectors left
Bart reported a problem wіth an out of bounds access in the low-level IRQ affinity code, which we root caused to the qla2xxx driver assigning all its MSI-X vectors to the pre and post vectors, and not having any left for the actually spread IRQs. Fix this issue by not asking for affinity assignment when there are no vectors to assign left. Fixes: 402723ad5c62 ("PCI/MSI: Provide pci_alloc_irq_vectors_affinity()") Link: https://lkml.kernel.org/r/1485359225.3093.3.camel@sandisk.com Reported-by: Bart Van Assche <bart.vanassche@sandisk.com> Tested-by: Bart Van Assche <bart.vanassche@sandisk.com> Signed-off-by: Christoph Hellwig <hch@lst.de> Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
Diffstat (limited to 'include/uapi/asm-generic/signal.h')