Re: [PATCH 4/4] usb: ehci: remove the 1st wmb in qh_append_tds

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

 



On Mon, 5 Sep 2011 tom.leiming@xxxxxxxxx wrote:

> From: Ming Lei <tom.leiming@xxxxxxxxx>
> 
> According to ehci spec 4.10.2, Advance Queue
> 
> 	If the fetched qTD has its Active bit set to a zero, the
> 	host controller aborts the queue advance and follows the
> 	queue head's horizontal pointer to the next schedule data
> 	structure.
> 
> the 'qtd' will be linked into qh hardware queue after the line
> below
> 
> 	*dummy = *qtd;
> 
> is executed and observed by EHCI HC, but EHCI HC won't have chance to
> fetch the qtd descriptor pointed by 'qtd' in qh_append_tds until the
> line below
> 
> 	dummy->hw_token = token;	#set Active bit here
> 
> is executed by CPU and observed by EHCI HC.
> 
> There is already one 'wmb' to order writing to 'dummy'/'qtd' descriptors
> and writing 'token' to 'dummy' descriptor(set Active bit), so the 1st
> wmb is not needed and can be removed.
> 
> Signed-off-by: Alan Stern <stern@xxxxxxxxxxxxxxxxxxx>
> Signed-off-by: Ming Lei <tom.leiming@xxxxxxxxx>
> ---
>  drivers/usb/host/ehci-q.c |    2 +-
>  1 files changed, 1 insertions(+), 1 deletions(-)
> 
> diff --git a/drivers/usb/host/ehci-q.c b/drivers/usb/host/ehci-q.c
> index 5996ad5..00443d2 100644
> --- a/drivers/usb/host/ehci-q.c
> +++ b/drivers/usb/host/ehci-q.c
> @@ -1057,7 +1057,7 @@ static struct ehci_qh *qh_append_tds (
>  			 */
>  			token = qtd->hw_token;
>  			qtd->hw_token = HALT_BIT(ehci);
> -			wmb ();
> +
>  			dummy = qh->dummy;
>  
>  			dma = dummy->qtd_dma;

Signed-off-by: Alan Stern <stern@xxxxxxxxxxxxxxxxxxx>

--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux