libata-link: add PMP links
Add link->pmp, ap->nr_pmp_links, ap->pmp_link[], and implement/update link helpers. printk helpers are updated such that port and link are identifed as 'ataP:' if no PMP is attached, while device is identified as 'ataP.DD:'. If PMP is attached, they become 'ataP:', 'ataP.LL:' and 'ataP.LL' - ie. link and device are identified their PMP number. If PPM is attached (ap->nr_pmp_links != 0), ata_for_each_link() iterates over PMP links, while __ata_for_each_link() iterates over the host link + PMP links. If PMP is not attached (ap->nr_pmp_links == 0), both iterate over only the host link. Signed-off-by: Tejun Heo <htejun@gmail.com> Signed-off-by: Jeff Garzik <jeff@garzik.org>
This commit is contained in:
@@ -6064,13 +6064,14 @@ void ata_dev_init(struct ata_device *dev)
|
||||
* ata_link_init - Initialize an ata_link structure
|
||||
* @ap: ATA port link is attached to
|
||||
* @link: Link structure to initialize
|
||||
* @pmp: Port multiplier port number
|
||||
*
|
||||
* Initialize @link.
|
||||
*
|
||||
* LOCKING:
|
||||
* Kernel thread context (may sleep)
|
||||
*/
|
||||
static void ata_link_init(struct ata_port *ap, struct ata_link *link)
|
||||
static void ata_link_init(struct ata_port *ap, struct ata_link *link, int pmp)
|
||||
{
|
||||
int i;
|
||||
|
||||
@@ -6078,6 +6079,7 @@ static void ata_link_init(struct ata_port *ap, struct ata_link *link)
|
||||
memset(link, 0, offsetof(struct ata_link, device[0]));
|
||||
|
||||
link->ap = ap;
|
||||
link->pmp = pmp;
|
||||
link->active_tag = ATA_TAG_POISON;
|
||||
link->hw_sata_spd_limit = UINT_MAX;
|
||||
|
||||
@@ -6173,7 +6175,7 @@ struct ata_port *ata_port_alloc(struct ata_host *host)
|
||||
|
||||
ap->cbl = ATA_CBL_NONE;
|
||||
|
||||
ata_link_init(ap, &ap->link);
|
||||
ata_link_init(ap, &ap->link, 0);
|
||||
|
||||
#ifdef ATA_IRQ_TRAP
|
||||
ap->stats.unhandled_irq = 1;
|
||||
|
Reference in New Issue
Block a user