Am 08.02.25 um 00:29 schrieb Damien Le Moal: > Commit 8c87215dd3a2 ("ata: libahci_platform: support non-consecutive > port numbers") modified ahci_platform_get_resources() to allow > identifying the ports of a controller that are defined as child nodes of > the controller node in order to support non-consecutive port numbers (as > defined by the platform device tree). > > However, this commit also erroneously sets bit 0 of > hpriv->mask_port_map when the platform devices tree does not define port > child nodes, to match the fact that the temporary default number of > ports used in that case is 1 (which is also consistent with the fact > that only index 0 of hpriv->phys[] is initialized with the call to > ahci_platform_get_phy(). But doing so causes ahci_platform_init_host() > to initialize and probe only the first port, even if this function > determines that the controller has in fact multiple ports using the > capability register of the controller (through a call to > ahci_nr_ports()). This can be seen with the ahci_mvebu driver (Armada > 385 SoC) with the second port declared as "dummy": > > ahci-mvebu f10a8000.sata: masking port_map 0x3 -> 0x1 > ahci-mvebu f10a8000.sata: AHCI vers 0001.0000, 32 command slots, 6 Gbps, platform mode > ahci-mvebu f10a8000.sata: 1/2 ports implemented (port mask 0x1) > ahci-mvebu f10a8000.sata: flags: 64bit ncq sntf led only pmp fbs pio slum part sxs > scsi host0: ahci-mvebu > scsi host1: ahci-mvebu > ata1: SATA max UDMA/133 mmio [mem 0xf10a8000-0xf10a9fff] port 0x100 irq 40 lpm-pol 0 > ata2: DUMMY > > Fix this issue by removing setting bit 0 of hpriv->mask_port_map when > the platform device tree does not define port child nodes. > > Reported-by: Klaus Kudielka <klaus.kudielka@xxxxxxxxx> > Fixes: 8c87215dd3a2 ("ata: libahci_platform: support non-consecutive port numbers") > Tested-by: Klaus Kudielka <klaus.kudielka@xxxxxxxxx> > Signed-off-by: Damien Le Moal <dlemoal@xxxxxxxxxx> > --- > Changes from v1: > - Improved commit message (fixed typos, added example and removed > cc-stable tag). > > drivers/ata/libahci_platform.c | 2 -- > 1 file changed, 2 deletions(-) > > diff --git a/drivers/ata/libahci_platform.c b/drivers/ata/libahci_platform.c > index 53b2c7719dc5..91d44302eac9 100644 > --- a/drivers/ata/libahci_platform.c > +++ b/drivers/ata/libahci_platform.c > @@ -651,8 +651,6 @@ struct ahci_host_priv *ahci_platform_get_resources(struct platform_device *pdev, > * If no sub-node was found, keep this for device tree > * compatibility > */ > - hpriv->mask_port_map |= BIT(0); > - > rc = ahci_platform_get_phy(hpriv, 0, dev, dev->of_node); > if (rc) > goto err_out; After testing on Armada 388 Helios-4 board with and without port subnodes, I can confirm that before my patch and without port subnodes both controller ports were fully operational. Therefore I believe restoring the original behaviour here is correct. Acked-by: Josua Mayer <josua@xxxxxxxxxxxxx>