Skip to content

Commit 2c202e6

Browse files
damien-lemoalfloatious
authored andcommitted
ata: libahci_platform: Do not set mask_port_map when not needed
Commit 8c87215 ("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@gmail.com> Fixes: 8c87215 ("ata: libahci_platform: support non-consecutive port numbers") Tested-by: Klaus Kudielka <klaus.kudielka@gmail.com> Signed-off-by: Damien Le Moal <dlemoal@kernel.org> Acked-by: Josua Mayer <josua@solid-run.com> Link: https://lore.kernel.org/r/20250207232915.1439174-1-dlemoal@kernel.org Signed-off-by: Niklas Cassel <cassel@kernel.org>
1 parent 6e74e53 commit 2c202e6

File tree

1 file changed

+0
-2
lines changed

1 file changed

+0
-2
lines changed

drivers/ata/libahci_platform.c

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -651,8 +651,6 @@ struct ahci_host_priv *ahci_platform_get_resources(struct platform_device *pdev,
651651
* If no sub-node was found, keep this for device tree
652652
* compatibility
653653
*/
654-
hpriv->mask_port_map |= BIT(0);
655-
656654
rc = ahci_platform_get_phy(hpriv, 0, dev, dev->of_node);
657655
if (rc)
658656
goto err_out;

0 commit comments

Comments
 (0)