[PATCH] ahci: use pci_alloc_irq_vectors

Robert Richter robert.richter at cavium.com
Thu Oct 20 08:47:22 PDT 2016


On 06.09.16 12:39:46, Tejun Heo wrote:
> On Mon, Sep 05, 2016 at 05:21:45PM +0200, Christoph Hellwig wrote:
> > Use the new pci_alloc_irq_vectors API to allocate MSI-X and MSI vectors.
> > The big advantage over the old code is that we can use the same API for
> > MSI and MSI-X, and that we don't need to store the MSI-X vector mapping
> > in driver-private data structures.
> > 
> > This first conversion keeps the probe order as-is: MSI-X multi vector,
> > MSI multi vector, MSI single vector, MSI-X single vector and last a
> > single least legacy interrupt line.  There is one small change of
> > behavior: we now check the "MSI Revert to Single Message" flag for
> > MSI-X in addition to MSI.
> > 
> > Because the API to find the Linux IRQ number for a MSI/MSI-X vector
> > is PCI specific, but libahaci is bus-agnostic I had to a
> > get_irq_vector function pointer to struct ahci_host_priv.  The
> > alternative would be to move the multi-vector case of ahci_host_activate
> > to ahci.c and just call ata_host_activate directly from the others
> > users of ahci_host_activate.
> 
> Applied to libata/for-4.9 after pulling in the mainline.

Hm, this broke SATA on ThunderX. Log below.

I could not yet look into this closer but reverting this patch
helped:

 0b9e2988ab22 ahci: use pci_alloc_irq_vectors

-Robert




[   14.940982] ata1.00: qc timeout (cmd 0x27)
[   14.941017] ata2.00: qc timeout (cmd 0x27)
[   14.941021] ata2.00: failed to read native max address (err_mask=0x4)
[   14.941023] ata2.00: HPA support seems broken, skipping HPA handling
[   14.961969] ata1.00: failed to read native max address (err_mask=0x4)
[   14.968401] ata1.00: HPA support seems broken, skipping HPA handling
[   15.405004] ata2: SATA link up 6.0 Gbps (SStatus 133 SControl 300)
[   15.437004] ata1: SATA link up 6.0 Gbps (SStatus 133 SControl 300)
[   20.573007] ata2.00: qc timeout (cmd 0xef)
[   20.573037] ata1.00: qc timeout (cmd 0xef)
[   20.573041] ata1.00: failed to enable AA (error_mask=0x4)
[   20.573044] ata1: limiting SATA link speed to 3.0 Gbps
[   20.591691] ata2.00: failed to enable AA (error_mask=0x4)
[   20.597083] ata2: limiting SATA link speed to 3.0 Gbps
[   21.037003] ata1: SATA link up 3.0 Gbps (SStatus 123 SControl 320)
[   21.043861] ata1.00: ATA-8: WDC WD5003ABYZ-011FA0, 01.01S03, max UDMA/133
[   21.050647] ata1.00: 976773168 sectors, multi 0: LBA48 NCQ (depth 31/32)
[   21.061007] ata2: SATA link up 3.0 Gbps (SStatus 123 SControl 320)
[   21.067683] ata2.00: ATA-8: WDC WD5003ABYZ-011FA0, 01.01S03, max UDMA/133
[   21.074468] ata2.00: 976773168 sectors, multi 0: LBA48 NCQ (depth 31/32)
[   36.444979] ata1.00: qc timeout (cmd 0xef)
[   36.445011] ata2.00: qc timeout (cmd 0xef)
[   36.445014] ata2.00: failed to set xfermode (err_mask=0x4)
[   36.445016] ata2.00: disabled
[   36.445026] ata2: hard resetting link
[   36.465268] ata1.00: failed to set xfermode (err_mask=0x4)
[   36.470750] ata1.00: disabled
[   36.473718] ata1: hard resetting link
[   36.909003] ata2: SATA link up 3.0 Gbps (SStatus 123 SControl 320)
[   36.915184] ata2: EH complete
[   36.941013] ata1: SATA link up 3.0 Gbps (SStatus 123 SControl 320)
[   36.947196] ata1: EH complete
[   36.960294] Freeing unused kernel memory: 1024K (fffffe0001f70000 -
fffffe0002070000)

../..

[  161.266664] dracut-initqueue[624]: Warning: dracut-initqueue timeout
- starting timeout scripts
[  161.793311] dracut-initqueue[624]: Warning: dracut-initqueue timeout
- starting timeout scripts
[  162.309073] dracut-initqueue[624]: Warning: dracut-initqueue timeout
- starting timeout scripts



More information about the linux-arm-kernel mailing list