Re: [PATCH v2] ata: libahci_platform: Do not set mask_port_map when not needed

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]


(追記) (追記ここまで)



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>

[Index of Archives] [Linux Filesystems] [Linux SCSI] [Linux RAID] [Git] [Kernel Newbies] [Linux Newbie] [Security] [Netfilter] [Bugtraq] [Yosemite News] [MIPS Linux] [ARM Linux] [Linux Security] [Samba] [Device Mapper]

(追記) (追記ここまで)
Powered by Linux

AltStyle によって変換されたページ (->オリジナル) /