Hi Xenia, Sorry for the really late review on this. On Mon, Aug 26, 2013 at 11:29:49PM +0300, Xenia Ragiadakou wrote: > This patch removes the to_pci_dev() conversion performed to generic struct > device since it is not actually useful (the pointer to the generic device > can be used directly rather through a conversion to pci_dev) and it is pci > bus specific. Good catch! I think the code only works on non-PCI hosts because it's just pointer math that takes the address of the pci_dev and then uses it to compute the underlying device pointer, and the code doesn't dereference the pci_dev structure pointer. The patch shouldn't change the current behavior, so I'll queue it for usb-next and 3.14 instead of 3.13. Sarah Sharp > Signed-off-by: Xenia Ragiadakou <burzalodowa@xxxxxxxxx> > --- > drivers/usb/host/xhci-mem.c | 20 ++++++++++---------- > 1 file changed, 10 insertions(+), 10 deletions(-) > > diff --git a/drivers/usb/host/xhci-mem.c b/drivers/usb/host/xhci-mem.c > index 6dc5c8b..f201990 100644 > --- a/drivers/usb/host/xhci-mem.c > +++ b/drivers/usb/host/xhci-mem.c > @@ -432,10 +432,10 @@ static void xhci_free_stream_ctx(struct xhci_hcd *xhci, > unsigned int num_stream_ctxs, > struct xhci_stream_ctx *stream_ctx, dma_addr_t dma) > { > - struct pci_dev *pdev = to_pci_dev(xhci_to_hcd(xhci)->self.controller); > + struct device *dev = xhci_to_hcd(xhci)->self.controller; > > if (num_stream_ctxs > MEDIUM_STREAM_ARRAY_SIZE) > - dma_free_coherent(&pdev->dev, > + dma_free_coherent(dev, > sizeof(struct xhci_stream_ctx)*num_stream_ctxs, > stream_ctx, dma); > else if (num_stream_ctxs <= SMALL_STREAM_ARRAY_SIZE) > @@ -460,10 +460,10 @@ static struct xhci_stream_ctx *xhci_alloc_stream_ctx(struct xhci_hcd *xhci, > unsigned int num_stream_ctxs, dma_addr_t *dma, > gfp_t mem_flags) > { > - struct pci_dev *pdev = to_pci_dev(xhci_to_hcd(xhci)->self.controller); > + struct device *dev = xhci_to_hcd(xhci)->self.controller; > > if (num_stream_ctxs > MEDIUM_STREAM_ARRAY_SIZE) > - return dma_alloc_coherent(&pdev->dev, > + return dma_alloc_coherent(dev, > sizeof(struct xhci_stream_ctx)*num_stream_ctxs, > dma, mem_flags); > else if (num_stream_ctxs <= SMALL_STREAM_ARRAY_SIZE) > @@ -1615,7 +1615,7 @@ static void scratchpad_free(struct xhci_hcd *xhci) > { > int num_sp; > int i; > - struct pci_dev *pdev = to_pci_dev(xhci_to_hcd(xhci)->self.controller); > + struct device *dev = xhci_to_hcd(xhci)->self.controller; > > if (!xhci->scratchpad) > return; > @@ -1623,13 +1623,13 @@ static void scratchpad_free(struct xhci_hcd *xhci) > num_sp = HCS_MAX_SCRATCHPAD(xhci->hcs_params2); > > for (i = 0; i < num_sp; i++) { > - dma_free_coherent(&pdev->dev, xhci->page_size, > + dma_free_coherent(dev, xhci->page_size, > xhci->scratchpad->sp_buffers[i], > xhci->scratchpad->sp_dma_buffers[i]); > } > kfree(xhci->scratchpad->sp_dma_buffers); > kfree(xhci->scratchpad->sp_buffers); > - dma_free_coherent(&pdev->dev, num_sp * sizeof(u64), > + dma_free_coherent(dev, num_sp * sizeof(u64), > xhci->scratchpad->sp_array, > xhci->scratchpad->sp_dma); > kfree(xhci->scratchpad); > @@ -1691,7 +1691,7 @@ void xhci_free_command(struct xhci_hcd *xhci, > > void xhci_mem_cleanup(struct xhci_hcd *xhci) > { > - struct pci_dev *pdev = to_pci_dev(xhci_to_hcd(xhci)->self.controller); > + struct device *dev = xhci_to_hcd(xhci)->self.controller; > struct dev_info *dev_info, *next; > struct xhci_cd *cur_cd, *next_cd; > unsigned long flags; > @@ -1701,7 +1701,7 @@ void xhci_mem_cleanup(struct xhci_hcd *xhci) > /* Free the Event Ring Segment Table and the actual Event Ring */ > size = sizeof(struct xhci_erst_entry)*(xhci->erst.num_entries); > if (xhci->erst.entries) > - dma_free_coherent(&pdev->dev, size, > + dma_free_coherent(dev, size, > xhci->erst.entries, xhci->erst.erst_dma_addr); > xhci->erst.entries = NULL; > xhci_dbg_trace(xhci, trace_xhci_dbg_init, "Freed ERST"); > @@ -1749,7 +1749,7 @@ void xhci_mem_cleanup(struct xhci_hcd *xhci) > "Freed medium stream array pool"); > > if (xhci->dcbaa) > - dma_free_coherent(&pdev->dev, sizeof(*xhci->dcbaa), > + dma_free_coherent(dev, sizeof(*xhci->dcbaa), > xhci->dcbaa, xhci->dcbaa->dma); > xhci->dcbaa = NULL; > > -- > 1.8.3.4 > > -- > 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 -- 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