Thread (19 messages) 19 messages, 4 authors, 2012-06-26

RE: [PATCH 0/6] Description for PCI patches using platform driver

flat view

From: Bhushan Bharat-R65777 <hidden>
Date: 2012-06-11 13:26:23

-----Original Message-----
From: Jia Hongtao-B38951
Sent: Monday, June 11, 2012 8:03 AM
To: Bhushan Bharat-R65777; linuxppc-dev@lists.ozlabs.org;
galak@kernel.crashing.org
Cc: Li Yang-R58472; benh@kernel.crashing.org; Wood Scott-B07421
Subject: RE: [PATCH 0/6] Description for PCI patches using platform drive=
r
=20
quoted
-----Original Message-----
From: Bhushan Bharat-R65777
Sent: Friday, June 08, 2012 6:47 PM
To: Jia Hongtao-B38951; linuxppc-dev@lists.ozlabs.org;
galak@kernel.crashing.org
Cc: Li Yang-R58472; benh@kernel.crashing.org; Wood Scott-B07421
Subject: RE: [PATCH 0/6] Description for PCI patches using platform
driver

quoted
-----Original Message-----
From: Jia Hongtao-B38951
Sent: Friday, June 08, 2012 3:12 PM
To: linuxppc-dev@lists.ozlabs.org; galak@kernel.crashing.org
Cc: Li Yang-R58472; benh@kernel.crashing.org; Wood Scott-B07421;
Bhushan Bharat-
quoted
R65777; Jia Hongtao-B38951
Subject: [PATCH 0/6] Description for PCI patches using platform
driver

This series of patches are to unify pci initialization code and add
PM
support
quoted
for all 85xx/86xx powerpc boards. But two side effects are
introduced
by this
quoted
mechanism which listed below:

1. of_platform_bus_probe() will be called twice but in some cases
duplication
quoted
   warning occured. We fix this in [PATCH 5/6].

2. Edac driver failed to register pci nodes as platform devices. We
fix
this
quoted
   in [PATCH 6/6].
With these patches will not the SWIOTLB will not be initialized even
if PCI/PCIe demanded?

Thanks
-Bharat
=20
These patches still have the swiotlb init problem if "ppc_swiotlb_enable"=
 is
only demanded by PCI/PCIe. One of the purposes of sending out these patch=
es is
to let us start a discussion for this problem in upstream.
Ok, I did not find any mention of that, so I thought that you have resolved=
 the issue by some means in these patches which I did not catch.

So, these patches introduces the issue, that SWIOTLB will not be initialize=
d if requested by pci/pcie. The request is raised by setting the flag ppc_s=
wiotlb_enable. The swiotlb_init() will be called in mem_init() if ppc_swiot=
lb_enable is set. Now with these patches, the request is raised after mem_i=
nit() is called. So request not handled :).

Following are the solutions we have thought of during our internal discussi=
ons (if I did not missed any):

1. These patches move the code from platform init to device init (arch_init=
call()). Rather than moving the whole code, let us divide the code into two=
. First, which is needed to raise the swiotlb init request and second the r=
est. Define this first as an function in arch/powerpc/sysdev/fsl_pci.c and =
call this from platform init code of the SOCs.

2. All known devices, the lowest PCIe outbound range starts at 0x80000000, =
but there's nothing above 0xc0000000. So the inbound of size 0x8000_0000 is=
 always availbe on all devices. Hardcode the check in platform code to chec=
k memblock_end_of_DRAM() to 0x80000000.

Something like this:
diff --git a/arch/powerpc/platforms/85xx/corenet_ds.c
b/arch/powerpc/platforms/85xx/corenet_ds.c
index 1f7028e..ef4e215 100644
--- a/arch/powerpc/platforms/85xx/corenet_ds.c
+++ b/arch/powerpc/platforms/85xx/corenet_ds.c
@@ -79,7 +79,7 @@ void __init corenet_ds_setup_arch(void)  #endif
#ifdef CONFIG_SWIOTLB
-       if (memblock_end_of_DRAM() > 0xffffffff)
+       if (memblock_end_of_DRAM() > 0xff000000)
                 ppc_swiotlb_enable =3D 1;  #endif
         pr_info("%s board from Freescale Semiconductor\n", ppc_md.name);

-------------

3. Always do swiotlb_init() in mem_init() and later after PCI init, if the =
swiotlb is not needed then free it (swiotlb_free()).=20

4. etc, please provide some other better way.

Thanks
-Bharat
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help