Re: [PATCH] usb: isp1760: avoid to flush_dcache_page on slab page

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

 



On Fri, Aug 09, 2013 at 02:26:40AM +0100, Ming Lei wrote:
> In isp1760-hcd driver, flush_dcache_page() is introduced in commit
> db8516f61b4(USB: isp1760: Flush the D-cache for the pipe-in transfer buffers)
> to fix cache incoherency problem when PIO reading from USB mass storage
> device to mapped page, so the flush should not need for slab pages which
> won't be mapped to userspace.
> 
> This patch fixes one kernel panic when CONFIG_DEBUG_VM is set.
> 
> Cc: Catalin Marinas <catalin.marinas@xxxxxxx>
> Tested-by: Christoffer Dall <christoffer.dall@xxxxxxxxxx>
> Signed-off-by: Ming Lei <ming.lei@xxxxxxxxxxxxx>
> ---
>  drivers/usb/host/isp1760-hcd.c |    4 +++-
>  1 file changed, 3 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/usb/host/isp1760-hcd.c b/drivers/usb/host/isp1760-hcd.c
> index 2facee5..c370e7d 100644
> --- a/drivers/usb/host/isp1760-hcd.c
> +++ b/drivers/usb/host/isp1760-hcd.c
> @@ -703,7 +703,9 @@ __acquires(priv->lock)
>  			urb->status = 0;
>  	}
>  
> -	if (usb_pipein(urb->pipe) && usb_pipetype(urb->pipe) != PIPE_CONTROL) {
> +	if (usb_pipein(urb->pipe) &&
> +			usb_pipetype(urb->pipe) != PIPE_CONTROL &&
> +			!PageSlab(virt_to_page(urb->transfer_buffer))) {
>  		void *ptr;
>  		for (ptr = urb->transfer_buffer;
>  		     ptr < urb->transfer_buffer + urb->transfer_buffer_length;

I think from the arm port perspective we can even revert the original
patch. Rather than adding flush_dcache_page() in several drivers we
moved to making the page cache pages dirty by default (and PG_arch_1
means 'clean') so that they are automatically flushed when first mapped
into user space.

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