Re: [PATCH 2/2] usb: whci-hcd: support urbs with scatter-gather lists

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

 



On Fri, 04 Dec 2009 09:34:06 +0000 David Vrabel <david.vrabel@xxxxxxx> wrote:

> Andrew Morton wrote:
> > On Mon, 24 Aug 2009 15:54:17 +0000 David Vrabel <david.vrabel@xxxxxxx> wrote:
> > 
> >> +			if (std->len + dma_len > QTD_MAX_XFER_SIZE) {
> >> +				dma_len = QTD_MAX_XFER_SIZE - std->len;
> >> +				ep = ((dma_addr + dma_len) / qset->max_packet) * qset->max_packet;
> >> +				dma_len = ep - dma_addr;
> >> +			}
> > 
> > Generates a call to __udivdi3 on i386, which doesn't exist.
> 
> This only happens if CONFIG_HIGHMEM_64G is enabled which isn't a very 
> interesting configuration so fixing this is low priority.

Who said?

allmodconfig is commonly used for compilation coverage testing.

> I do have a patch but it needs more testing.

Please don't merge this code into mainline until that is completed.

> > I'm reluctant to convert it to do_div() because I can't conceive of any
> > situation in which it makes sense to perform division on a physical bus
> > address :(
> 
> I don't understand this comment.  Can you think of a way to implement 
> this in another way?

Well I don't know what the code's trying to do.  It takes a physical
bus address then rounds it down to some multiple of `max_packet'.  I
can't see how that makes sense in terms of physical hardware unless
perhaps max_packet is a power of two, in which case all this code
should be using ands, ors and shifts.

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