Re: [OPW kernel] xhci.c: dma_set_mask

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

 



[Please leave Alan and the Linux USB mailing list Cc'ed, since I asked
for Alan's advice on this.]

On Wed, May 15, 2013 at 07:50:39AM +0300, Xenia Ragiadakou wrote:
> I will try to clarify more my question.
> 
> In xhci.c: 4665 states that:
> 
> if (HCC_64BIT_ADDR(temp)) {
>             xhci_dbg(xhci, "Enabling 64-bit DMA addresses.\n");
>             dma_set_mask(hcd->self.controller, DMA_BIT_MASK(64));
>         } else {
>             dma_set_mask(hcd->self.controller, DMA_BIT_MASK(32));
>         }
> }
> 
> Is there a possibility for the dma_set_mask function to fail,
>  so that it will be necessary to check for this condition :
> 
> if (HCC_64BIT_ADDR(temp)) {
>             xhci_dbg(xhci, "Enabling 64-bit DMA addresses.\n");
>             if (dma_set_mask(hcd->self.controller, DMA_BIT_MASK(64)))
>                        goto error;
>         } else {
>             if (dma_set_mask(hcd->self.controller, DMA_BIT_MASK(32)))
>                         goto error;
>         }
> }

In theory, yes, dma_set_mask() could fail.  It would have to be a pretty
broken xHCI host that indicates it supports 64-bits when it doesn't.

Perhaps in the 64-bit case, you want to try to enable 32-bit DMA on
failure?  If that fails, then bail out.

Since the DMA setup code is copy-pasted twice in xhci_gen_setup(), 
perhaps you want to refactor the DMA setup into its own function as a
separate patch on top of your bug fix?

Sarah Sharp
--
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