stable.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* Re: [PATCH] pci-dma: Fix x86 dma_alloc_coherent to fully clear all pages returned
       [not found] ` <54CBF1A0.9080005@cogentembedded.com>
@ 2015-01-30 21:54   ` Tim Chen
  2015-02-02 14:02     ` Jiri Slaby
  0 siblings, 1 reply; 12+ messages in thread
From: Tim Chen @ 2015-01-30 21:54 UTC (permalink / raw)
  To: Sergei Shtylyov
  Cc: H. Peter Anvin, Akinobu Mita, Mathias Nyman, Andi Kleen,
	Ingo Molnar, Andrew Morton, Marek Szyprowski, Thomas Gleixner,
	linux-kernel, x86, linux-usb, stable

On Sat, 2015-01-31 at 00:03 +0300, Sergei Shtylyov wrote:
> On 01/30/2015 10:54 PM, Tim Chen wrote:

> >
> >   		return NULL;
> >   	}
> > +	/* round up to full page size */
> > +	size = (((size-1) >> PAGE_SHIFT) + 1) * PAGE_SIZE;
> 
>     This is quite suboptimal formula, we can do without shifts and 
> multiplications (hopefully, still converted to shifts by gcc):
> 
> 	size = (size + ~PAGE_MASK) & PAGE_MASK;

Agree.  I've updated patch below

Thanks.

Tim

--->8---

From: Tim Chen <tim.c.chen@linux.intel.com>
Subject: [PATCH] pci-dma: Fix x86 dma_alloc_coherent to fully clear all pages returned


Commit d92ef66c4f8f ("x86: make dma_alloc_coherent() return zeroed memory
if CMA is enabled") changed the dma_alloc_coherent page clearance from
using an __GFP_ZERO in page allocation to not setting the flag but doing
an explicit memory clear at the end.

However the memory clear only covered the memory size that
was requested, but may not be up to the full extent of the
last page, if the total pages returned exceed the
memory size requested.  This behavior has caused problem with XHCI
and caused it to hang:

kernel: xhci_hcd 0000:00:14.0: Stopped the command ring failed, maybe the host is dead
kernel: xhci_hcd 0000:00:14.0: Abort command ring failed
kernel: xhci_hcd 0000:00:14.0: HC died; cleaning up
kernel: xhci_hcd 0000:00:14.0: Error while assigning device slot ID
kernel: xhci_hcd 0000:00:14.0: Max number of devices this xHCI host supports is 64.

Other drivers may have similar issue if it assumes that the pages
allocated are completely zeroed.

This patch ensures that the pages returned are fully cleared.

Signed-off-by: Tim Chen <tim.c.chen@linux.intel.com>
Cc: <stable@vger.kernel.org> # 3.16+

---
 arch/x86/kernel/pci-dma.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/arch/x86/kernel/pci-dma.c b/arch/x86/kernel/pci-dma.c
index a25e202..e9d8dee 100644
--- a/arch/x86/kernel/pci-dma.c
+++ b/arch/x86/kernel/pci-dma.c
@@ -125,6 +125,8 @@ again:
 
 		return NULL;
 	}
+	/* round up to full page size */
+	size = (size + ~PAGE_MASK) & PAGE_MASK;
 	memset(page_address(page), 0, size);
 	*dma_addr = addr;
 	return page_address(page);
-- 
1.9.3




^ permalink raw reply related	[flat|nested] 12+ messages in thread

* Re: [PATCH] pci-dma: Fix x86 dma_alloc_coherent to fully clear all pages returned
  2015-01-30 21:54   ` [PATCH] pci-dma: Fix x86 dma_alloc_coherent to fully clear all pages returned Tim Chen
@ 2015-02-02 14:02     ` Jiri Slaby
  2015-02-02 16:39       ` Sergei Shtylyov
  0 siblings, 1 reply; 12+ messages in thread
From: Jiri Slaby @ 2015-02-02 14:02 UTC (permalink / raw)
  To: Tim Chen, Sergei Shtylyov
  Cc: H. Peter Anvin, Akinobu Mita, Mathias Nyman, Andi Kleen,
	Ingo Molnar, Andrew Morton, Marek Szyprowski, Thomas Gleixner,
	linux-kernel, x86, linux-usb, stable

On 01/30/2015, 10:54 PM, Tim Chen wrote:
> On Sat, 2015-01-31 at 00:03 +0300, Sergei Shtylyov wrote:
>> On 01/30/2015 10:54 PM, Tim Chen wrote:
> 
>>>
>>>   		return NULL;
>>>   	}
>>> +	/* round up to full page size */
>>> +	size = (((size-1) >> PAGE_SHIFT) + 1) * PAGE_SIZE;
>>
>>     This is quite suboptimal formula, we can do without shifts and 
>> multiplications (hopefully, still converted to shifts by gcc):
>>
>> 	size = (size + ~PAGE_MASK) & PAGE_MASK;
> 
> Agree.  I've updated patch below
> 
> Thanks.
> 
> Tim
> 
> --->8---
> 
> From: Tim Chen <tim.c.chen@linux.intel.com>
> Subject: [PATCH] pci-dma: Fix x86 dma_alloc_coherent to fully clear all pages returned
> 
> 
> Commit d92ef66c4f8f ("x86: make dma_alloc_coherent() return zeroed memory
> if CMA is enabled") changed the dma_alloc_coherent page clearance from
> using an __GFP_ZERO in page allocation to not setting the flag but doing
> an explicit memory clear at the end.
> 
> However the memory clear only covered the memory size that
> was requested, but may not be up to the full extent of the
> last page, if the total pages returned exceed the
> memory size requested.  This behavior has caused problem with XHCI
> and caused it to hang:
> 
> kernel: xhci_hcd 0000:00:14.0: Stopped the command ring failed, maybe the host is dead
> kernel: xhci_hcd 0000:00:14.0: Abort command ring failed
> kernel: xhci_hcd 0000:00:14.0: HC died; cleaning up
> kernel: xhci_hcd 0000:00:14.0: Error while assigning device slot ID
> kernel: xhci_hcd 0000:00:14.0: Max number of devices this xHCI host supports is 64.
> 
> Other drivers may have similar issue if it assumes that the pages
> allocated are completely zeroed.
> 
> This patch ensures that the pages returned are fully cleared.
> 
> Signed-off-by: Tim Chen <tim.c.chen@linux.intel.com>
> Cc: <stable@vger.kernel.org> # 3.16+
> 
> ---
>  arch/x86/kernel/pci-dma.c | 2 ++
>  1 file changed, 2 insertions(+)
> 
> diff --git a/arch/x86/kernel/pci-dma.c b/arch/x86/kernel/pci-dma.c
> index a25e202..e9d8dee 100644
> --- a/arch/x86/kernel/pci-dma.c
> +++ b/arch/x86/kernel/pci-dma.c
> @@ -125,6 +125,8 @@ again:
>  
>  		return NULL;
>  	}
> +	/* round up to full page size */
> +	size = (size + ~PAGE_MASK) & PAGE_MASK;

Hi, is this an open-coded version of PAGE_ALIGN?

>  	memset(page_address(page), 0, size);
>  	*dma_addr = addr;
>  	return page_address(page);
> 


-- 
js
suse labs

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH] pci-dma: Fix x86 dma_alloc_coherent to fully clear all pages returned
  2015-02-02 14:02     ` Jiri Slaby
@ 2015-02-02 16:39       ` Sergei Shtylyov
  2015-02-04 18:30         ` Tim Chen
  0 siblings, 1 reply; 12+ messages in thread
From: Sergei Shtylyov @ 2015-02-02 16:39 UTC (permalink / raw)
  To: Jiri Slaby, Tim Chen
  Cc: H. Peter Anvin, Akinobu Mita, Mathias Nyman, Andi Kleen,
	Ingo Molnar, Andrew Morton, Marek Szyprowski, Thomas Gleixner,
	linux-kernel, x86, linux-usb, stable

Hello.

On 02/02/2015 05:02 PM, Jiri Slaby wrote:

>> From: Tim Chen <tim.c.chen@linux.intel.com>
>> Subject: [PATCH] pci-dma: Fix x86 dma_alloc_coherent to fully clear all pages returned


>> Commit d92ef66c4f8f ("x86: make dma_alloc_coherent() return zeroed memory
>> if CMA is enabled") changed the dma_alloc_coherent page clearance from
>> using an __GFP_ZERO in page allocation to not setting the flag but doing
>> an explicit memory clear at the end.

>> However the memory clear only covered the memory size that
>> was requested, but may not be up to the full extent of the
>> last page, if the total pages returned exceed the
>> memory size requested.  This behavior has caused problem with XHCI
>> and caused it to hang:

>> kernel: xhci_hcd 0000:00:14.0: Stopped the command ring failed, maybe the host is dead
>> kernel: xhci_hcd 0000:00:14.0: Abort command ring failed
>> kernel: xhci_hcd 0000:00:14.0: HC died; cleaning up
>> kernel: xhci_hcd 0000:00:14.0: Error while assigning device slot ID
>> kernel: xhci_hcd 0000:00:14.0: Max number of devices this xHCI host supports is 64.

>> Other drivers may have similar issue if it assumes that the pages
>> allocated are completely zeroed.

>> This patch ensures that the pages returned are fully cleared.

>> Signed-off-by: Tim Chen <tim.c.chen@linux.intel.com>
>> Cc: <stable@vger.kernel.org> # 3.16+

>> ---
>>   arch/x86/kernel/pci-dma.c | 2 ++
>>   1 file changed, 2 insertions(+)

>> diff --git a/arch/x86/kernel/pci-dma.c b/arch/x86/kernel/pci-dma.c
>> index a25e202..e9d8dee 100644
>> --- a/arch/x86/kernel/pci-dma.c
>> +++ b/arch/x86/kernel/pci-dma.c
>> @@ -125,6 +125,8 @@ again:
>>
>>   		return NULL;
>>   	}
>> +	/* round up to full page size */
>> +	size = (size + ~PAGE_MASK) & PAGE_MASK;

> Hi, is this an open-coded version of PAGE_ALIGN?

    Yes, it appears so. :-)

WBR, Sergei


^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH] pci-dma: Fix x86 dma_alloc_coherent to fully clear all pages returned
  2015-02-02 16:39       ` Sergei Shtylyov
@ 2015-02-04 18:30         ` Tim Chen
  2015-02-18 19:40           ` Tim Chen
  0 siblings, 1 reply; 12+ messages in thread
From: Tim Chen @ 2015-02-04 18:30 UTC (permalink / raw)
  To: Sergei Shtylyov
  Cc: Jiri Slaby, H. Peter Anvin, Akinobu Mita, Mathias Nyman,
	Andi Kleen, Ingo Molnar, Andrew Morton, Marek Szyprowski,
	Thomas Gleixner, linux-kernel, x86, linux-usb, stable

On Mon, 2015-02-02 at 19:39 +0300, Sergei Shtylyov wrote:

> 
> > Hi, is this an open-coded version of PAGE_ALIGN?
> 
>     Yes, it appears so. :-)
> 
> WBR, Sergei
> 

Thanks for the suggestion by Jiri. I updated the patch to use PAGE_ALIGN
below.

Regards,
Tim

--->8---
From: Tim Chen <tim.c.chen@linux.intel.com>
Subject: [PATCH] pci-dma: Fix x86 dma_alloc_coherent to fully clear all pages returned

Commit d92ef66c4f8f ("x86: make dma_alloc_coherent() return zeroed memory
if CMA is enabled") changed the dma_alloc_coherent page clearance from
using an __GFP_ZERO in page allocation to not setting the flag but doing
an explicit memory clear at the end.

However the memory clear only covered the memory size that
was requested, but may not be up to the full extent of the
last page, if the total pages returned exceed the
memory size requested.  This behavior has caused problem with XHCI
and caused it to hang:

kernel: xhci_hcd 0000:00:14.0: Stopped the command ring failed, maybe the host is dead
kernel: xhci_hcd 0000:00:14.0: Abort command ring failed
kernel: xhci_hcd 0000:00:14.0: HC died; cleaning up
kernel: xhci_hcd 0000:00:14.0: Error while assigning device slot ID
kernel: xhci_hcd 0000:00:14.0: Max number of devices this xHCI host supports is 64.

Other drivers may have similar issue if it assumes that the pages
allocated are completely zeroed.

This patch ensures that the pages returned are fully cleared.

Signed-off-by: Tim Chen <tim.c.chen@linux.intel.com>
Cc: stable@vger.kernel.org
---
 arch/x86/kernel/pci-dma.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/arch/x86/kernel/pci-dma.c b/arch/x86/kernel/pci-dma.c
index a25e202..3bdee55 100644
--- a/arch/x86/kernel/pci-dma.c
+++ b/arch/x86/kernel/pci-dma.c
@@ -125,6 +125,8 @@ again:
 
 		return NULL;
 	}
+	/* round up to full page size */
+	size = PAGE_ALIGN(size);
 	memset(page_address(page), 0, size);
 	*dma_addr = addr;
 	return page_address(page);
-- 
1.9.3

 


^ permalink raw reply related	[flat|nested] 12+ messages in thread

* Re: [PATCH] pci-dma: Fix x86 dma_alloc_coherent to fully clear all pages returned
  2015-02-04 18:30         ` Tim Chen
@ 2015-02-18 19:40           ` Tim Chen
  2015-02-18 19:53             ` Alan Stern
  0 siblings, 1 reply; 12+ messages in thread
From: Tim Chen @ 2015-02-18 19:40 UTC (permalink / raw)
  To: Sergei Shtylyov, Greg Kroah-Hartman
  Cc: Jiri Slaby, H. Peter Anvin, Akinobu Mita, Mathias Nyman,
	Andi Kleen, Ingo Molnar, Andrew Morton, Marek Szyprowski,
	Thomas Gleixner, linux-kernel, x86, linux-usb, stable, Alan Stern

On Wed, 2015-02-04 at 10:30 -0800, Tim Chen wrote:
> On Mon, 2015-02-02 at 19:39 +0300, Sergei Shtylyov wrote:
> 
> > 
> > > Hi, is this an open-coded version of PAGE_ALIGN?
> > 
> >     Yes, it appears so. :-)
> > 
> > WBR, Sergei
> > 
> 
> Thanks for the suggestion by Jiri. I updated the patch to use PAGE_ALIGN
> below.
> 
> Regards,
> Tim
> 

Is there any resolution on this patch?  I haven't seen fixes from the
XHCI folks yet.  This is breaking many of our systems.

Thanks.

Tim

> --->8---
> From: Tim Chen <tim.c.chen@linux.intel.com>
> Subject: [PATCH] pci-dma: Fix x86 dma_alloc_coherent to fully clear all pages returned
> 
> Commit d92ef66c4f8f ("x86: make dma_alloc_coherent() return zeroed memory
> if CMA is enabled") changed the dma_alloc_coherent page clearance from
> using an __GFP_ZERO in page allocation to not setting the flag but doing
> an explicit memory clear at the end.
> 
> However the memory clear only covered the memory size that
> was requested, but may not be up to the full extent of the
> last page, if the total pages returned exceed the
> memory size requested.  This behavior has caused problem with XHCI
> and caused it to hang:
> 
> kernel: xhci_hcd 0000:00:14.0: Stopped the command ring failed, maybe the host is dead
> kernel: xhci_hcd 0000:00:14.0: Abort command ring failed
> kernel: xhci_hcd 0000:00:14.0: HC died; cleaning up
> kernel: xhci_hcd 0000:00:14.0: Error while assigning device slot ID
> kernel: xhci_hcd 0000:00:14.0: Max number of devices this xHCI host supports is 64.
> 
> Other drivers may have similar issue if it assumes that the pages
> allocated are completely zeroed.
> 
> This patch ensures that the pages returned are fully cleared.
> 
> Signed-off-by: Tim Chen <tim.c.chen@linux.intel.com>
> Cc: stable@vger.kernel.org
> ---
>  arch/x86/kernel/pci-dma.c | 2 ++
>  1 file changed, 2 insertions(+)
> 
> diff --git a/arch/x86/kernel/pci-dma.c b/arch/x86/kernel/pci-dma.c
> index a25e202..3bdee55 100644
> --- a/arch/x86/kernel/pci-dma.c
> +++ b/arch/x86/kernel/pci-dma.c
> @@ -125,6 +125,8 @@ again:
>  
>  		return NULL;
>  	}
> +	/* round up to full page size */
> +	size = PAGE_ALIGN(size);
>  	memset(page_address(page), 0, size);
>  	*dma_addr = addr;
>  	return page_address(page);



^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH] pci-dma: Fix x86 dma_alloc_coherent to fully clear all pages returned
  2015-02-18 19:40           ` Tim Chen
@ 2015-02-18 19:53             ` Alan Stern
  2015-02-18 20:19               ` Tim Chen
  0 siblings, 1 reply; 12+ messages in thread
From: Alan Stern @ 2015-02-18 19:53 UTC (permalink / raw)
  To: Tim Chen
  Cc: Sergei Shtylyov, Greg Kroah-Hartman, Jiri Slaby, H. Peter Anvin,
	Akinobu Mita, Mathias Nyman, Andi Kleen, Ingo Molnar,
	Andrew Morton, Marek Szyprowski, Thomas Gleixner, linux-kernel,
	x86, linux-usb, stable

On Wed, 18 Feb 2015, Tim Chen wrote:

> On Wed, 2015-02-04 at 10:30 -0800, Tim Chen wrote:
> > On Mon, 2015-02-02 at 19:39 +0300, Sergei Shtylyov wrote:
> > 
> > > 
> > > > Hi, is this an open-coded version of PAGE_ALIGN?
> > > 
> > >     Yes, it appears so. :-)
> > > 
> > > WBR, Sergei
> > > 
> > 
> > Thanks for the suggestion by Jiri. I updated the patch to use PAGE_ALIGN
> > below.
> > 
> > Regards,
> > Tim
> > 
> 
> Is there any resolution on this patch?  I haven't seen fixes from the
> XHCI folks yet.  This is breaking many of our systems.

Have you tried doing the experiments I suggested in

	http://marc.info/?l=linux-usb&m=142272448620716&w=2

to determine where the problem occurs?

Alan Stern


^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH] pci-dma: Fix x86 dma_alloc_coherent to fully clear all pages returned
  2015-02-18 19:53             ` Alan Stern
@ 2015-02-18 20:19               ` Tim Chen
  2015-02-18 20:36                 ` Greg Kroah-Hartman
                                   ` (2 more replies)
  0 siblings, 3 replies; 12+ messages in thread
From: Tim Chen @ 2015-02-18 20:19 UTC (permalink / raw)
  To: Alan Stern
  Cc: Sergei Shtylyov, Greg Kroah-Hartman, Jiri Slaby, H. Peter Anvin,
	Akinobu Mita, Mathias Nyman, Andi Kleen, Ingo Molnar,
	Andrew Morton, Marek Szyprowski, Thomas Gleixner, linux-kernel,
	x86, linux-usb, stable

On Wed, 2015-02-18 at 14:53 -0500, Alan Stern wrote:
> On Wed, 18 Feb 2015, Tim Chen wrote:
> 
> > On Wed, 2015-02-04 at 10:30 -0800, Tim Chen wrote:
> > > On Mon, 2015-02-02 at 19:39 +0300, Sergei Shtylyov wrote:
> > > 
> > > > 
> > > > > Hi, is this an open-coded version of PAGE_ALIGN?
> > > > 
> > > >     Yes, it appears so. :-)
> > > > 
> > > > WBR, Sergei
> > > > 
> > > 
> > > Thanks for the suggestion by Jiri. I updated the patch to use PAGE_ALIGN
> > > below.
> > > 
> > > Regards,
> > > Tim
> > > 
> > 
> > Is there any resolution on this patch?  I haven't seen fixes from the
> > XHCI folks yet.  This is breaking many of our systems.
> 
> Have you tried doing the experiments I suggested in
> 
>         http://marc.info/?l=linux-usb&m=142272448620716&w=2
> 
> to determine where the problem occurs?
> 

I was bogged down with other things lately and I haven't got a chance to
test that.  But as you said, there's very few places where xhci 
call this memory allocation.  So I think the problem has been fairly
narrowed down for the XHCI folks.

Tim

> Alan Stern
> 



^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH] pci-dma: Fix x86 dma_alloc_coherent to fully clear all pages returned
  2015-02-18 20:19               ` Tim Chen
@ 2015-02-18 20:36                 ` Greg Kroah-Hartman
  2015-02-18 20:39                 ` Andi Kleen
  2015-02-18 20:45                 ` Alan Stern
  2 siblings, 0 replies; 12+ messages in thread
From: Greg Kroah-Hartman @ 2015-02-18 20:36 UTC (permalink / raw)
  To: Tim Chen
  Cc: Alan Stern, Sergei Shtylyov, Jiri Slaby, H. Peter Anvin,
	Akinobu Mita, Mathias Nyman, Andi Kleen, Ingo Molnar,
	Andrew Morton, Marek Szyprowski, Thomas Gleixner, linux-kernel,
	x86, linux-usb, stable

On Wed, Feb 18, 2015 at 12:19:03PM -0800, Tim Chen wrote:
> On Wed, 2015-02-18 at 14:53 -0500, Alan Stern wrote:
> > On Wed, 18 Feb 2015, Tim Chen wrote:
> > 
> > > On Wed, 2015-02-04 at 10:30 -0800, Tim Chen wrote:
> > > > On Mon, 2015-02-02 at 19:39 +0300, Sergei Shtylyov wrote:
> > > > 
> > > > > 
> > > > > > Hi, is this an open-coded version of PAGE_ALIGN?
> > > > > 
> > > > >     Yes, it appears so. :-)
> > > > > 
> > > > > WBR, Sergei
> > > > > 
> > > > 
> > > > Thanks for the suggestion by Jiri. I updated the patch to use PAGE_ALIGN
> > > > below.
> > > > 
> > > > Regards,
> > > > Tim
> > > > 
> > > 
> > > Is there any resolution on this patch?  I haven't seen fixes from the
> > > XHCI folks yet.  This is breaking many of our systems.
> > 
> > Have you tried doing the experiments I suggested in
> > 
> >         http://marc.info/?l=linux-usb&m=142272448620716&w=2
> > 
> > to determine where the problem occurs?
> > 
> 
> I was bogged down with other things lately and I haven't got a chance to
> test that.  But as you said, there's very few places where xhci 
> call this memory allocation.  So I think the problem has been fairly
> narrowed down for the XHCI folks.

The "XHCI folks" are in a cube near you, go poke them in person if they
aren't answering their emails :)

good luck,

greg k-h

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH] pci-dma: Fix x86 dma_alloc_coherent to fully clear all pages returned
  2015-02-18 20:19               ` Tim Chen
  2015-02-18 20:36                 ` Greg Kroah-Hartman
@ 2015-02-18 20:39                 ` Andi Kleen
  2015-02-18 21:15                   ` Alan Stern
  2015-02-18 20:45                 ` Alan Stern
  2 siblings, 1 reply; 12+ messages in thread
From: Andi Kleen @ 2015-02-18 20:39 UTC (permalink / raw)
  To: Tim Chen
  Cc: Alan Stern, Sergei Shtylyov, Greg Kroah-Hartman, Jiri Slaby,
	H. Peter Anvin, Akinobu Mita, Mathias Nyman, Andi Kleen,
	Ingo Molnar, Andrew Morton, Marek Szyprowski, Thomas Gleixner,
	linux-kernel, x86, linux-usb, stable, torvalds

> > Have you tried doing the experiments I suggested in
> > 
> >         http://marc.info/?l=linux-usb&m=142272448620716&w=2
> > 
> > to determine where the problem occurs?
> > 
> 
> I was bogged down with other things lately and I haven't got a chance to
> test that.  But as you said, there's very few places where xhci 
> call this memory allocation.  So I think the problem has been fairly
> narrowed down for the XHCI folks.

Also I don't really understand why we're even discussing this. The patch
only makes an widely used API behave as it was before. Who knows who
else was broken with this change. There's no sane way to audit all
users. There is no real advantage of the new behavior.

The only good way is to revert to old behavior, like in Tim's
original patch. And doing it quickly for mainline and stable.

FWIW we have a large number of systems here that are broken
without this change.

-Andi

-- 
ak@linux.intel.com -- Speaking for myself only.

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH] pci-dma: Fix x86 dma_alloc_coherent to fully clear all pages returned
  2015-02-18 20:19               ` Tim Chen
  2015-02-18 20:36                 ` Greg Kroah-Hartman
  2015-02-18 20:39                 ` Andi Kleen
@ 2015-02-18 20:45                 ` Alan Stern
  2015-02-18 23:59                   ` Tim Chen
  2 siblings, 1 reply; 12+ messages in thread
From: Alan Stern @ 2015-02-18 20:45 UTC (permalink / raw)
  To: Tim Chen
  Cc: Sergei Shtylyov, Greg Kroah-Hartman, Jiri Slaby, H. Peter Anvin,
	Akinobu Mita, Mathias Nyman, Andi Kleen, Ingo Molnar,
	Andrew Morton, Marek Szyprowski, Thomas Gleixner, linux-kernel,
	x86, linux-usb, stable

On Wed, 18 Feb 2015, Tim Chen wrote:

> > Have you tried doing the experiments I suggested in
> > 
> >         http://marc.info/?l=linux-usb&m=142272448620716&w=2
> > 
> > to determine where the problem occurs?
> > 
> 
> I was bogged down with other things lately and I haven't got a chance to
> test that.  But as you said, there's very few places where xhci 
> call this memory allocation.  So I think the problem has been fairly
> narrowed down for the XHCI folks.

I disagree.  _You_ reported the error.  How can you expect other people 
to figure out where it is with no help from you?

I looked briefly at the xhci-hcd DMA allocation code.  It does not 
contain any obvious mistakes.

Alan Stern


^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH] pci-dma: Fix x86 dma_alloc_coherent to fully clear all pages returned
  2015-02-18 20:39                 ` Andi Kleen
@ 2015-02-18 21:15                   ` Alan Stern
  0 siblings, 0 replies; 12+ messages in thread
From: Alan Stern @ 2015-02-18 21:15 UTC (permalink / raw)
  To: Andi Kleen
  Cc: Tim Chen, Sergei Shtylyov, Greg Kroah-Hartman, Jiri Slaby,
	H. Peter Anvin, Akinobu Mita, Mathias Nyman, Ingo Molnar,
	Andrew Morton, Marek Szyprowski, Thomas Gleixner, linux-kernel,
	x86, linux-usb, stable, torvalds

On Wed, 18 Feb 2015, Andi Kleen wrote:

> > > Have you tried doing the experiments I suggested in
> > > 
> > >         http://marc.info/?l=linux-usb&m=142272448620716&w=2
> > > 
> > > to determine where the problem occurs?
> > > 
> > 
> > I was bogged down with other things lately and I haven't got a chance to
> > test that.  But as you said, there's very few places where xhci 
> > call this memory allocation.  So I think the problem has been fairly
> > narrowed down for the XHCI folks.
> 
> Also I don't really understand why we're even discussing this. The patch
> only makes an widely used API behave as it was before. Who knows who
> else was broken with this change. There's no sane way to audit all
> users. There is no real advantage of the new behavior.

We are discussing it because fixing problems is better than papering
around them.

> The only good way is to revert to old behavior, like in Tim's
> original patch. And doing it quickly for mainline and stable.

I will agree that applying the patch is a reasonable thing to do.  
However, I also believe that it is important to fix the bugs revealed 
by the API change.

> FWIW we have a large number of systems here that are broken
> without this change.

For all you know, they will still be broken even after the change is 
applied.  The breakage may become less obvious, but that doesn't mean 
it will disappear entirely.

Alan Stern


^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH] pci-dma: Fix x86 dma_alloc_coherent to fully clear all pages returned
  2015-02-18 20:45                 ` Alan Stern
@ 2015-02-18 23:59                   ` Tim Chen
  0 siblings, 0 replies; 12+ messages in thread
From: Tim Chen @ 2015-02-18 23:59 UTC (permalink / raw)
  To: Alan Stern
  Cc: Sergei Shtylyov, Greg Kroah-Hartman, Jiri Slaby, H. Peter Anvin,
	Akinobu Mita, Mathias Nyman, Andi Kleen, Ingo Molnar,
	Andrew Morton, Marek Szyprowski, Thomas Gleixner, linux-kernel,
	x86, linux-usb, stable

On Wed, 2015-02-18 at 15:45 -0500, Alan Stern wrote:
> On Wed, 18 Feb 2015, Tim Chen wrote:
> 
> > > Have you tried doing the experiments I suggested in
> > > 
> > >         http://marc.info/?l=linux-usb&m=142272448620716&w=2
> > > 
> > > to determine where the problem occurs?
> > > 
> > 
> > I was bogged down with other things lately and I haven't got a chance to
> > test that.  But as you said, there's very few places where xhci 
> > call this memory allocation.  So I think the problem has been fairly
> > narrowed down for the XHCI folks.
> 
> I disagree.  _You_ reported the error.  How can you expect other people 
> to figure out where it is with no help from you?
> 
> I looked briefly at the xhci-hcd DMA allocation code.  It does not 
> contain any obvious mistakes.
> 
> Alan Stern
> 

The error and my quick fix is right here.  And xhci still needs to be
fixed properly.  I'll send out the patch below in a proper patch.

Tim

diff --git a/drivers/usb/host/xhci-mem.c b/drivers/usb/host/xhci-mem.c
index 5cb3d7a..39e7196 100644
--- a/drivers/usb/host/xhci-mem.c
+++ b/drivers/usb/host/xhci-mem.c
@@ -1658,7 +1658,7 @@ static int scratchpad_alloc(struct xhci_hcd *xhci,
gfp_t flags)
                goto fail_sp;

        xhci->scratchpad->sp_array = dma_alloc_coherent(dev,
-                                    num_sp * sizeof(u64),
+                                    PAGE_ALIGN(num_sp * sizeof(u64)),
                                     &xhci->scratchpad->sp_dma, flags);
        if (!xhci->scratchpad->sp_array)





^ permalink raw reply related	[flat|nested] 12+ messages in thread

end of thread, other threads:[~2015-02-18 23:59 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
     [not found] <1422647641.9530.2.camel@schen9-desk2.jf.intel.com>
     [not found] ` <54CBF1A0.9080005@cogentembedded.com>
2015-01-30 21:54   ` [PATCH] pci-dma: Fix x86 dma_alloc_coherent to fully clear all pages returned Tim Chen
2015-02-02 14:02     ` Jiri Slaby
2015-02-02 16:39       ` Sergei Shtylyov
2015-02-04 18:30         ` Tim Chen
2015-02-18 19:40           ` Tim Chen
2015-02-18 19:53             ` Alan Stern
2015-02-18 20:19               ` Tim Chen
2015-02-18 20:36                 ` Greg Kroah-Hartman
2015-02-18 20:39                 ` Andi Kleen
2015-02-18 21:15                   ` Alan Stern
2015-02-18 20:45                 ` Alan Stern
2015-02-18 23:59                   ` Tim Chen

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).