RE: [PATCH] powerpc/usb: fix bug of kernel hang when initializing usb

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

 



> -----Original Message-----
> From: Benjamin Herrenschmidt [mailto:benh@xxxxxxxxxxxxxxxxxxx]
> Sent: Friday, February 17, 2012 8:03 AM
> To: Liu Shengzhou-B36685
> Cc: linux-usb@xxxxxxxxxxxxxxx; linuxppc-dev@xxxxxxxxxxxxxxxx
> Subject: Re: [PATCH] powerpc/usb: fix bug of kernel hang when
> initializing usb
> 
> On Fri, 2012-02-17 at 09:58 +1100, Benjamin Herrenschmidt wrote:
> > On Thu, 2012-02-16 at 18:02 +0800, Shengzhou Liu wrote:
> > > If USB UTMI PHY is not enable, writing to portsc register will lead
> > > to kernel hang during boot up.
> > >
> > > Signed-off-by: Shengzhou Liu <Shengzhou.Liu@xxxxxxxxxxxxx>
> > > ---
> > > Apply for master branch of
> > > git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-
> 2.6.git
> > > Tested on P5020DS, the issue was reported by Benjamin Herrenschmidt.
> >
> > This fixes the hang, but sadly doesn't make USB work. I now get:
> 
>  .../...
> 
> Ok, found the problem.
> 
> First, the SDK kernel had a delay after setting that bit, I added that
> back in. This is not what fixed it but it looks like the right thing to
> do, though please, use msleep rather than udelay here if possible (not
> in atomic context).
> 
> Then, the real culprit is (CC'ing Kumar and Scott to figure out why)
> this statement:
> 
> #if defined(CONFIG_PPC32) && !defined(CONFIG_NOT_COHERENT_CACHE)
> 	/*
> 	 * Turn on cache snooping hardware, since some PowerPC platforms
> 	 * wholly rely on hardware to deal with cache coherent
> 	 */
> 
> 	/* Setup Snooping for all the 4GB space */
> 	/* SNOOP1 starts from 0x0, size 2G */
> 	out_be32(non_ehci + FSL_SOC_USB_SNOOP1, 0x0 | SNOOP_SIZE_2GB);
> 	/* SNOOP2 starts from 0x80000000, size 2G */
> 	out_be32(non_ehci + FSL_SOC_USB_SNOOP2, 0x80000000 |
> SNOOP_SIZE_2GB); #endif
> 
> I'm building a 64-bit kernel so this isn't compiled and it looks like
> the EHCI is thus not snooping.
> 
> By removing the defined(CONFIG_PPC32) part of the statement, my problem
> goes away.
> 
> Cheers,
> Ben.
> 
> 

[Shengzhou] I tested the patch with 32bit P5020DS, USB worked well. Not tested with 64-bit kernel.
Glad to you had found the problem in case of 64-bit, thanks!
��.n��������+%������w��{.n�����{���)��jg��������ݢj����G�������j:+v���w�m������w�������h�����٥



[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux