Re: [Xen-devel] [PATCH v4 0/7] unsafe big.LITTLE support

2018-03-12 Thread Julien Grall

Hi,

On 12/03/18 02:57, Peng Fan wrote:

Hi Stefano,
On Fri, Mar 09, 2018 at 05:09:20PM -0800, Stefano Stabellini wrote:

On Fri, 9 Mar 2018, Julien Grall wrote:

Furthermore, the workaround is not in Linux upstream and I doubt this will be
accepted as it is. So I am not convinced that we should modify Xen interface
for that.

Anyway, given that your silicon is going to be respined, then you probably
want to restrict to run on the same cluster.


Hi Pen,

I think that i.MX8 is a critical platform for the future of embedded
virtualization and I really want to support it in Xen out of the box.

However, I agree with Julien that if there will be a new version of the
silicon with this issue properly fixed in hardware, then it might not
make sense to add workarounds in Xen for this. Unless you think the
version of the hardware with the errata will be commercialized?


Understand. I just thought some kernel code use machine
compatible string to do some check for passthrough case.


Usually you give access to a device and describe it in the device-tree. 
The kernel will then use the appropriate driver for that device.


You should never need to know what the machine is. Can you describe why 
this would be necessary in your use case?




Some early customers might use the 1.0 chip to do their development,
but I think all will switch to use new Silicon in the end.



Do you plan to upstream your workaround in Linux? If not, then it might


No plan. This workaround might not be accepted by Linux community.


Based on what you said above, I would not even consider to upstream 
workaround for Xen.





be best for you to carry the workaround for Xen in your Xen tree, the
same way you'll do for Linux. For workarounds that affect/involve both
Linux and Xen, we tend to follow the same policy as the Linux kernel,
unless we have good reasons not to. On the other end, if you intend to
upstream the Linux workaround, then we can discuss what to do for Xen.


Also let me expand on one of Julien's suggestions that actually I think
is quite good. Assuming that we have the tlb maintenance workaround in
the hypervisor, it would be safe to start guests only in the big or only
in the little cluster, right? In other words, you could still use both


I am a bit lost here. Are you refering Julien's suggestion 3?
"3) Trap all TLBs access from the guest and convert them to TLB 
alle1s/vmalls12e1is"

Currently, only use one the of the 2 clusters, I do not meet issue.
No change to xen and domu not aware of linux workaround.

Do you mean it is not safe without tlb maintenance workaround on my current
hardware, even if restricting Guest OS only have one kind of cpu?


I think so. But this is only based on how I understood the description 
provided in the commit message you pointed early on.


I have no insight whether TLB flush in hypervisor are going to be 
affected by the workaround. I would recommend to speak with your 
hardware team for that.




A naive question, what case would require tlb broadcast from A53 to A72 in XEN? 
page balloon?
Xen is sharing page-table between all the pCPU. As the hypervisor will 
run on the both cluster, you would need to convert all innershareable

TLBs flush by VA to a full innershareable.

Cheers,

--
Julien Grall

___
Xen-devel mailing list
Xen-devel@lists.xenproject.org
https://lists.xenproject.org/mailman/listinfo/xen-devel

Re: [Xen-devel] [PATCH v4 0/7] unsafe big.LITTLE support

2018-03-12 Thread Julien Grall



On 12/03/18 02:32, Peng Fan wrote:

On Fri, Mar 09, 2018 at 02:40:25PM +, Julien Grall wrote:

Hi,

On 09/03/18 13:30, Peng Fan wrote:

Hi Julien,
On Fri, Mar 09, 2018 at 10:22:09AM +, Julien Grall wrote:

Hi Peng,

On 09/03/18 09:05, Peng Fan wrote:

On Thu, Mar 08, 2018 at 03:13:50PM +, Julien Grall wrote:

On 08/03/18 12:43, Peng Fan wrote:
There are a major difference between Dom0 and DomU in your setup.
Dom0 vCPUs are pinned to a specific pCPU, so they can't move around.
For DomU, each vCPU are pinned to a set of pCPUs, so they can move
around.

But, did you check the DomU has the workaround enabled? I am asking
that because it looks like to me the way to detect the workaround is
based on a device (scu) and not processor. So I am not convinced that
DomU is actually using your workaround.


Just checked this. Because xen toolstack create device tree
with compatible "compatible = "xen,xenvm-4.10", "xen,xenvm";",
but the linux code use "fsl,imx8qm" to detect soc, then call scu
to get revision of chip.


But how does the guest call the scu?


We are doing GPU and display passthrough, also some other IPs passthrough.
we could not totally rely on Dom0 to configure the pinmux, gpio, clk,
relying on dom0 to do that would bring much hack code to our kernel, also
runtime clk set rate in domu could not be done.

So we expose an interface to domu to directly communicate with SCU(system
control unit).


Do you always expect a domain to access the SCU? Even with no
passthrough involved?


only needed when a domain only needs to directly access hardware.


Then your suggested workaround can't work for guest with not device 
passthrough. I would recommend to find a workaround that works for every 
guests.


Cheers,

--
Julien Grall

___
Xen-devel mailing list
Xen-devel@lists.xenproject.org
https://lists.xenproject.org/mailman/listinfo/xen-devel

Re: [Xen-devel] [PATCH v4 0/7] unsafe big.LITTLE support

2018-03-11 Thread Peng Fan
Hi Stefano,
On Fri, Mar 09, 2018 at 05:09:20PM -0800, Stefano Stabellini wrote:
>On Fri, 9 Mar 2018, Julien Grall wrote:
>> Furthermore, the workaround is not in Linux upstream and I doubt this will be
>> accepted as it is. So I am not convinced that we should modify Xen interface
>> for that.
>> 
>> Anyway, given that your silicon is going to be respined, then you probably
>> want to restrict to run on the same cluster.
>
>Hi Pen,
>
>I think that i.MX8 is a critical platform for the future of embedded
>virtualization and I really want to support it in Xen out of the box.
>
>However, I agree with Julien that if there will be a new version of the
>silicon with this issue properly fixed in hardware, then it might not
>make sense to add workarounds in Xen for this. Unless you think the
>version of the hardware with the errata will be commercialized?

Understand. I just thought some kernel code use machine
compatible string to do some check for passthrough case.

Some early customers might use the 1.0 chip to do their development,
but I think all will switch to use new Silicon in the end.

>
>Do you plan to upstream your workaround in Linux? If not, then it might

No plan. This workaround might not be accepted by Linux community.

>be best for you to carry the workaround for Xen in your Xen tree, the
>same way you'll do for Linux. For workarounds that affect/involve both
>Linux and Xen, we tend to follow the same policy as the Linux kernel,
>unless we have good reasons not to. On the other end, if you intend to
>upstream the Linux workaround, then we can discuss what to do for Xen.
>
>
>Also let me expand on one of Julien's suggestions that actually I think
>is quite good. Assuming that we have the tlb maintenance workaround in
>the hypervisor, it would be safe to start guests only in the big or only
>in the little cluster, right? In other words, you could still use both

I am a bit lost here. Are you refering Julien's suggestion 3?
"3) Trap all TLBs access from the guest and convert them to TLB 
alle1s/vmalls12e1is"

Currently, only use one the of the 2 clusters, I do not meet issue.
No change to xen and domu not aware of linux workaround.

Do you mean it is not safe without tlb maintenance workaround on my current
hardware, even if restricting Guest OS only have one kind of cpu?

A naive question, what case would require tlb broadcast from A53 to A72 in XEN? 
page balloon?

Thanks
Peng.

>clusters but only starting guests in one or the other, not both. This is
>a good compromise because it allows full usage of the hardware, a
>relatively small patch in Xen, and no guest visible changes (such as
>toolstack changes to modify the compatible line). Guest visible and user
>visible changes are particularly troublesome to maintain in the long
>term and this is reason why we are reticent in introducing them. The tlb
>maintenance workaround in the hypervisor is something much easier to
>manage and we could consider taking it in if hardware with the errata
>will become available to customers.
>
>Cheers,
>
>Stefano

-- 

___
Xen-devel mailing list
Xen-devel@lists.xenproject.org
https://lists.xenproject.org/mailman/listinfo/xen-devel

Re: [Xen-devel] [PATCH v4 0/7] unsafe big.LITTLE support

2018-03-11 Thread Peng Fan
On Fri, Mar 09, 2018 at 02:40:25PM +, Julien Grall wrote:
>Hi,
>
>On 09/03/18 13:30, Peng Fan wrote:
>>Hi Julien,
>>On Fri, Mar 09, 2018 at 10:22:09AM +, Julien Grall wrote:
>>>Hi Peng,
>>>
>>>On 09/03/18 09:05, Peng Fan wrote:
On Thu, Mar 08, 2018 at 03:13:50PM +, Julien Grall wrote:
>On 08/03/18 12:43, Peng Fan wrote:
>There are a major difference between Dom0 and DomU in your setup.
>Dom0 vCPUs are pinned to a specific pCPU, so they can't move around.
>For DomU, each vCPU are pinned to a set of pCPUs, so they can move
>around.
>
>But, did you check the DomU has the workaround enabled? I am asking
>that because it looks like to me the way to detect the workaround is
>based on a device (scu) and not processor. So I am not convinced that
>DomU is actually using your workaround.

Just checked this. Because xen toolstack create device tree
with compatible "compatible = "xen,xenvm-4.10", "xen,xenvm";",
but the linux code use "fsl,imx8qm" to detect soc, then call scu
to get revision of chip.
>>>
>>>But how does the guest call the scu?
>>
>>We are doing GPU and display passthrough, also some other IPs passthrough.
>>we could not totally rely on Dom0 to configure the pinmux, gpio, clk,
>>relying on dom0 to do that would bring much hack code to our kernel, also
>>runtime clk set rate in domu could not be done.
>>
>>So we expose an interface to domu to directly communicate with SCU(system
>>control unit).
>
>Do you always expect a domain to access the SCU? Even with no
>passthrough involved?

only needed when a domain only needs to directly access hardware.

>
>>
>>>

After add an entry in linux side "{ .compatible = "xen,xenvm", .data = 
_soc_data, },"
It seems works. Passed a map/unmap stress test which easily fail without
the tlb workaround.

Wonder is it ok to specific machine compatible in domu.cfg and let xen stack
use this machine compatible other than "xen,xenvm"? Is this acceptable by 
community?
>>>
>>>A user should be able to boot a guest safely on any machine without
>>>having to hack the configuration file. He should also be able to boot
>>>a guest with both ACPI and DT as this is independent from the real
>>>machine. So for me the way to find the workaround at the moment is
>>>not acceptable for a Xen guest upstream.
>>
>>I have no idea about ACPI (:
>>we are mainly working on embedded case, and mostly we are partitioning
>>our IPs. So our kernel normally only work with the dedicated DTB.
>>I am not asking to replace "xen,xenvm", just would like to add a option
>>that if user specific a machine compatible in cfg or else, xen toolstack
>>could add that in the final device tree.
>
>I know you were suggesting that and my point stands. Xen VM are not
>compatible with IMX8 platform.
>
>And again, a user should not have to tweak his configuration file,
>have to passthrough some device to an untrusted guest in order to
>have a guest booting normally on your platform. That is breaking the
>whole purpose of virtualization.
>
>Furthermore, the workaround is not in Linux upstream and I doubt this
>will be accepted as it is. So I am not convinced that we should
>modify Xen interface for that.
>
>Anyway, given that your silicon is going to be respined, then you
>probably want to restrict to run on the same cluster.

Understand.

Thanks,
Peng.

>
>Cheers,
>
>-- 
>Julien Grall

-- 

___
Xen-devel mailing list
Xen-devel@lists.xenproject.org
https://lists.xenproject.org/mailman/listinfo/xen-devel

Re: [Xen-devel] [PATCH v4 0/7] unsafe big.LITTLE support

2018-03-09 Thread Stefano Stabellini
On Fri, 9 Mar 2018, Julien Grall wrote:
> Furthermore, the workaround is not in Linux upstream and I doubt this will be
> accepted as it is. So I am not convinced that we should modify Xen interface
> for that.
> 
> Anyway, given that your silicon is going to be respined, then you probably
> want to restrict to run on the same cluster.

Hi Pen,

I think that i.MX8 is a critical platform for the future of embedded
virtualization and I really want to support it in Xen out of the box.

However, I agree with Julien that if there will be a new version of the
silicon with this issue properly fixed in hardware, then it might not
make sense to add workarounds in Xen for this. Unless you think the
version of the hardware with the errata will be commercialized?

Do you plan to upstream your workaround in Linux? If not, then it might
be best for you to carry the workaround for Xen in your Xen tree, the
same way you'll do for Linux. For workarounds that affect/involve both
Linux and Xen, we tend to follow the same policy as the Linux kernel,
unless we have good reasons not to. On the other end, if you intend to
upstream the Linux workaround, then we can discuss what to do for Xen.


Also let me expand on one of Julien's suggestions that actually I think
is quite good. Assuming that we have the tlb maintenance workaround in
the hypervisor, it would be safe to start guests only in the big or only
in the little cluster, right? In other words, you could still use both
clusters but only starting guests in one or the other, not both. This is
a good compromise because it allows full usage of the hardware, a
relatively small patch in Xen, and no guest visible changes (such as
toolstack changes to modify the compatible line). Guest visible and user
visible changes are particularly troublesome to maintain in the long
term and this is reason why we are reticent in introducing them. The tlb
maintenance workaround in the hypervisor is something much easier to
manage and we could consider taking it in if hardware with the errata
will become available to customers.

Cheers,

Stefano

___
Xen-devel mailing list
Xen-devel@lists.xenproject.org
https://lists.xenproject.org/mailman/listinfo/xen-devel

Re: [Xen-devel] [PATCH v4 0/7] unsafe big.LITTLE support

2018-03-09 Thread Julien Grall

Hi,

On 09/03/18 13:30, Peng Fan wrote:

Hi Julien,
On Fri, Mar 09, 2018 at 10:22:09AM +, Julien Grall wrote:

Hi Peng,

On 09/03/18 09:05, Peng Fan wrote:

On Thu, Mar 08, 2018 at 03:13:50PM +, Julien Grall wrote:

On 08/03/18 12:43, Peng Fan wrote:
There are a major difference between Dom0 and DomU in your setup.
Dom0 vCPUs are pinned to a specific pCPU, so they can't move around.
For DomU, each vCPU are pinned to a set of pCPUs, so they can move
around.

But, did you check the DomU has the workaround enabled? I am asking
that because it looks like to me the way to detect the workaround is
based on a device (scu) and not processor. So I am not convinced that
DomU is actually using your workaround.


Just checked this. Because xen toolstack create device tree
with compatible "compatible = "xen,xenvm-4.10", "xen,xenvm";",
but the linux code use "fsl,imx8qm" to detect soc, then call scu
to get revision of chip.


But how does the guest call the scu?


We are doing GPU and display passthrough, also some other IPs passthrough.
we could not totally rely on Dom0 to configure the pinmux, gpio, clk,
relying on dom0 to do that would bring much hack code to our kernel, also
runtime clk set rate in domu could not be done.

So we expose an interface to domu to directly communicate with SCU(system
control unit).


Do you always expect a domain to access the SCU? Even with no 
passthrough involved?








After add an entry in linux side "{ .compatible = "xen,xenvm", .data = 
_soc_data, },"
It seems works. Passed a map/unmap stress test which easily fail without
the tlb workaround.

Wonder is it ok to specific machine compatible in domu.cfg and let xen stack
use this machine compatible other than "xen,xenvm"? Is this acceptable by 
community?


A user should be able to boot a guest safely on any machine without
having to hack the configuration file. He should also be able to boot
a guest with both ACPI and DT as this is independent from the real
machine. So for me the way to find the workaround at the moment is
not acceptable for a Xen guest upstream.


I have no idea about ACPI (:
we are mainly working on embedded case, and mostly we are partitioning
our IPs. So our kernel normally only work with the dedicated DTB.
I am not asking to replace "xen,xenvm", just would like to add a option
that if user specific a machine compatible in cfg or else, xen toolstack
could add that in the final device tree.


I know you were suggesting that and my point stands. Xen VM are not 
compatible with IMX8 platform.


And again, a user should not have to tweak his configuration file, have 
to passthrough some device to an untrusted guest in order to have a 
guest booting normally on your platform. That is breaking the whole 
purpose of virtualization.


Furthermore, the workaround is not in Linux upstream and I doubt this 
will be accepted as it is. So I am not convinced that we should modify 
Xen interface for that.


Anyway, given that your silicon is going to be respined, then you 
probably want to restrict to run on the same cluster.


Cheers,

--
Julien Grall

___
Xen-devel mailing list
Xen-devel@lists.xenproject.org
https://lists.xenproject.org/mailman/listinfo/xen-devel

Re: [Xen-devel] [PATCH v4 0/7] unsafe big.LITTLE support

2018-03-09 Thread Peng Fan
Hi Julien,
On Fri, Mar 09, 2018 at 10:22:09AM +, Julien Grall wrote:
>Hi Peng,
>
>On 09/03/18 09:05, Peng Fan wrote:
>>On Thu, Mar 08, 2018 at 03:13:50PM +, Julien Grall wrote:
>>>On 08/03/18 12:43, Peng Fan wrote:
>>>There are a major difference between Dom0 and DomU in your setup.
>>>Dom0 vCPUs are pinned to a specific pCPU, so they can't move around.
>>>For DomU, each vCPU are pinned to a set of pCPUs, so they can move
>>>around.
>>>
>>>But, did you check the DomU has the workaround enabled? I am asking
>>>that because it looks like to me the way to detect the workaround is
>>>based on a device (scu) and not processor. So I am not convinced that
>>>DomU is actually using your workaround.
>>
>>Just checked this. Because xen toolstack create device tree
>>with compatible "compatible = "xen,xenvm-4.10", "xen,xenvm";",
>>but the linux code use "fsl,imx8qm" to detect soc, then call scu
>>to get revision of chip.
>
>But how does the guest call the scu?

We are doing GPU and display passthrough, also some other IPs passthrough.
we could not totally rely on Dom0 to configure the pinmux, gpio, clk,
relying on dom0 to do that would bring much hack code to our kernel, also
runtime clk set rate in domu could not be done.

So we expose an interface to domu to directly communicate with SCU(system
control unit). 

>
>>
>>After add an entry in linux side "{ .compatible = "xen,xenvm", .data = 
>>_soc_data, },"
>>It seems works. Passed a map/unmap stress test which easily fail without
>>the tlb workaround.
>>
>>Wonder is it ok to specific machine compatible in domu.cfg and let xen stack
>>use this machine compatible other than "xen,xenvm"? Is this acceptable by 
>>community?
>
>A user should be able to boot a guest safely on any machine without
>having to hack the configuration file. He should also be able to boot
>a guest with both ACPI and DT as this is independent from the real
>machine. So for me the way to find the workaround at the moment is
>not acceptable for a Xen guest upstream.

I have no idea about ACPI (:
we are mainly working on embedded case, and mostly we are partitioning
our IPs. So our kernel normally only work with the dedicated DTB.
I am not asking to replace "xen,xenvm", just would like to add a option
that if user specific a machine compatible in cfg or else, xen toolstack
could add that in the final device tree.

Anyway new silicon will have issue fixed.
>
>What could be acceptable for the community is one of the 3 solutions below:
>   1) Only use one of the 2 clusters
The easiest way:)
>   2) Restrict both Xen and Guest to use only 36-bit VA.
I have no idea, need to check
>   3) Trap all TLBs access from the guest and convert them to TLB
>alle1s/vmalls12e1is
This will introduce performance penalty. I would not do this.

Thanks,
Peng.
>
>I would be happy to consider any other.
>
>Cheers,
>
>-- 
>Julien Grall

-- 

___
Xen-devel mailing list
Xen-devel@lists.xenproject.org
https://lists.xenproject.org/mailman/listinfo/xen-devel

Re: [Xen-devel] [PATCH v4 0/7] unsafe big.LITTLE support

2018-03-09 Thread Julien Grall

Hi Peng,

On 09/03/18 09:05, Peng Fan wrote:

On Thu, Mar 08, 2018 at 03:13:50PM +, Julien Grall wrote:

On 08/03/18 12:43, Peng Fan wrote:
There are a major difference between Dom0 and DomU in your setup.
Dom0 vCPUs are pinned to a specific pCPU, so they can't move around.
For DomU, each vCPU are pinned to a set of pCPUs, so they can move
around.

But, did you check the DomU has the workaround enabled? I am asking
that because it looks like to me the way to detect the workaround is
based on a device (scu) and not processor. So I am not convinced that
DomU is actually using your workaround.


Just checked this. Because xen toolstack create device tree
with compatible "compatible = "xen,xenvm-4.10", "xen,xenvm";",
but the linux code use "fsl,imx8qm" to detect soc, then call scu
to get revision of chip.


But how does the guest call the scu?



After add an entry in linux side "{ .compatible = "xen,xenvm", .data = 
_soc_data, },"
It seems works. Passed a map/unmap stress test which easily fail without
the tlb workaround.

Wonder is it ok to specific machine compatible in domu.cfg and let xen stack
use this machine compatible other than "xen,xenvm"? Is this acceptable by 
community?


A user should be able to boot a guest safely on any machine without 
having to hack the configuration file. He should also be able to boot a 
guest with both ACPI and DT as this is independent from the real 
machine. So for me the way to find the workaround at the moment is not 
acceptable for a Xen guest upstream.


What could be acceptable for the community is one of the 3 solutions below:
1) Only use one of the 2 clusters
2) Restrict both Xen and Guest to use only 36-bit VA.
	3) Trap all TLBs access from the guest and convert them to TLB 
alle1s/vmalls12e1is


I would be happy to consider any other.

Cheers,

--
Julien Grall

___
Xen-devel mailing list
Xen-devel@lists.xenproject.org
https://lists.xenproject.org/mailman/listinfo/xen-devel

Re: [Xen-devel] [PATCH v4 0/7] unsafe big.LITTLE support

2018-03-09 Thread Peng Fan
On Thu, Mar 08, 2018 at 03:13:50PM +, Julien Grall wrote:
>Hi,
>
>On 08/03/18 12:43, Peng Fan wrote:
>>I am not sure whether this issue cause DomU big/Little not work.
>
>Well, I would recommend to speak with NXP whether this errata affects
>TLB flush for Hypervisor Page-Table or Stage-2 Page-Table.

I tried the following, but no help. Not sure my patch is correct. I
think it affects stage2 TLB.

--- a/xen/include/asm-arm/arm64/flushtlb.h
+++ b/xen/include/asm-arm/arm64/flushtlb.h
@@ -6,7 +6,7 @@ static inline void flush_tlb_local(void)
   {
   asm volatile(
   "dsb sy;"
-"tlbi vmalls12e1;"
+"tlbi alle1;"
   "dsb sy;"
   "isb;"
   : : : "memory");
@@ -17,7 +17,7 @@ static inline void flush_tlb(void)
   {
   asm volatile(
   "dsb sy;"
-"tlbi vmalls12e1is;"
+"tlbi alle1;"
>>>
>>>I am not sure why you drop the innershareable here?
>>Just want to invalid all the tlb, innershareable could be kept.
>>This is not a formal patch, just my trying to narrow the issue.
>
>alle1 will only flush the TLBs of the local processor. The flush will
>not get propagated to the other CPUs of the system. So you definitely
>want this to be innershareable to avoid the other processors
>containing stale TLBs.
>
>>>
   "dsb sy;"
   "isb;"
   : : : "memory");
@@ -39,7 +39,7 @@ static inline void flush_tlb_all(void)
   {
   asm volatile(
   "dsb sy;"
-"tlbi alle1is;"
+"tlbi alle1;"
>>>
>>>Ditto.
>>>
   "dsb sy;"
   "isb;"
   : : : "memory");
--- a/xen/include/asm-arm/arm64/page.h
+++ b/xen/include/asm-arm/arm64/page.h
@@ -74,14 +74,16 @@ static inline void flush_xen_data_tlb_local(void)
   /* Flush TLB of local processor for address va. */
   static inline void  __flush_xen_data_tlb_one_local(vaddr_t va)
   {
-asm volatile("tlbi vae2, %0;" : : "r" (va>>PAGE_SHIFT) : "memory");
+   flush_xen_data_tlb_local();
+//asm volatile("tlbi vae2, %0;" : : "r" (va>>PAGE_SHIFT) :
+ "memory");
   }

   /* Flush TLB of all processors in the inner-shareable domain for
* address va. */
   static inline void __flush_xen_data_tlb_one(vaddr_t va)
   {
-asm volatile("tlbi vae2is, %0;" : : "r" (va>>PAGE_SHIFT) : "memory");
+   flush_xen_data_tlb_local();
>>>
>>>Why do you replace an innershareable call to a local call? Is it part of the 
>>>errata?
>>
>>No. Just my trying to narrow down.
>
>Then you should keep the innershareable. See above.
>
>>>
+//asm volatile("tlbi vae2is, %0;" : : "r" (va>>PAGE_SHIFT) :
+ "memory");
   }

>
>>So wonder has this patchset been tested on Big/Little Hardware?
>
>This series only adds facility to report the correct MIDR to the guest.
>If your platform requires more, then it would be necessary send a patch for
>>>Xen.

Do you have any suggestions? Besides MIDR/ACTLR/Cacheline, are there more
>>>needed?
>>>
>>>Having a bit more details from your side would be helpful. At the moment, I 
>>>have
>>>no clue what's going on.
>>
>>As from the linux kernel commit:
>> on i.MX8QM TO1.0, there is an issue: the bus width between A53-CCI-A72
>> is limited to 36bits.TLB maintenance through DVM messages over AR 
>> channel,
>> some bits will be forced(truncated) to zero as the followings:
>>
>> ASID[15:12] is forced to 0
>> VA[48:45] is forced to 0
>> VA[44:41] is forced to 0
>> VA[39:36] is forced to 0
>>
>> This issue will result in the TLB aintenance across the clusters not 
>> working
>> as expected due to some VA and ASID bits get truncated and forced to be 
>> zero.
>>
>> The SW workaround is: use the vmalle1is if VA larger than 36bits or
>> ASID[15:12] is not zero, otherwise, we use original TLB maintenance path.
>>
>>When doing tlb maintenance through DVM from A53 to A72, some bits are forced
>>to 0, this means TLB may not be really invalidated from A72 perspective.
>>
>>Currently I am trying a domu with big/little capability, but not allowing 
>>big/little vcpu
>>migration.
>>
>>I am not sure whether this hardware issue impacts DomU or not. Or it is 
>>software issue.
>>As you could see dom0 has 6 vcpus, I did a stress test and not found issue on 
>>dom0.
>
>There are a major difference between Dom0 and DomU in your setup.
>Dom0 vCPUs are pinned to a specific pCPU, so they can't move around.
>For DomU, each vCPU are pinned to a set of pCPUs, so they can move
>around.
>
>But, did you check the DomU has the workaround enabled? I am asking
>that because it looks like to me the way to detect the workaround is
>based on a device (scu) and not processor. So I am not convinced that
>DomU is actually using your workaround.

Just checked this. Because 

Re: [Xen-devel] [PATCH v4 0/7] unsafe big.LITTLE support

2018-03-08 Thread Julien Grall

Hi,

On 08/03/18 12:43, Peng Fan wrote:

I am not sure whether this issue cause DomU big/Little not work.


Well, I would recommend to speak with NXP whether this errata affects
TLB flush for Hypervisor Page-Table or Stage-2 Page-Table.


I tried the following, but no help. Not sure my patch is correct. I
think it affects stage2 TLB.

--- a/xen/include/asm-arm/arm64/flushtlb.h
+++ b/xen/include/asm-arm/arm64/flushtlb.h
@@ -6,7 +6,7 @@ static inline void flush_tlb_local(void)
   {
   asm volatile(
   "dsb sy;"
-"tlbi vmalls12e1;"
+"tlbi alle1;"
   "dsb sy;"
   "isb;"
   : : : "memory");
@@ -17,7 +17,7 @@ static inline void flush_tlb(void)
   {
   asm volatile(
   "dsb sy;"
-"tlbi vmalls12e1is;"
+"tlbi alle1;"


I am not sure why you drop the innershareable here?

Just want to invalid all the tlb, innershareable could be kept.
This is not a formal patch, just my trying to narrow the issue.


alle1 will only flush the TLBs of the local processor. The flush will 
not get propagated to the other CPUs of the system. So you definitely 
want this to be innershareable to avoid the other processors containing 
stale TLBs.





   "dsb sy;"
   "isb;"
   : : : "memory");
@@ -39,7 +39,7 @@ static inline void flush_tlb_all(void)
   {
   asm volatile(
   "dsb sy;"
-"tlbi alle1is;"
+"tlbi alle1;"


Ditto.


   "dsb sy;"
   "isb;"
   : : : "memory");
--- a/xen/include/asm-arm/arm64/page.h
+++ b/xen/include/asm-arm/arm64/page.h
@@ -74,14 +74,16 @@ static inline void flush_xen_data_tlb_local(void)
   /* Flush TLB of local processor for address va. */
   static inline void  __flush_xen_data_tlb_one_local(vaddr_t va)
   {
-asm volatile("tlbi vae2, %0;" : : "r" (va>>PAGE_SHIFT) : "memory");
+   flush_xen_data_tlb_local();
+//asm volatile("tlbi vae2, %0;" : : "r" (va>>PAGE_SHIFT) :
+ "memory");
   }

   /* Flush TLB of all processors in the inner-shareable domain for
* address va. */
   static inline void __flush_xen_data_tlb_one(vaddr_t va)
   {
-asm volatile("tlbi vae2is, %0;" : : "r" (va>>PAGE_SHIFT) : "memory");
+   flush_xen_data_tlb_local();


Why do you replace an innershareable call to a local call? Is it part of the 
errata?


No. Just my trying to narrow down.


Then you should keep the innershareable. See above.




+//asm volatile("tlbi vae2is, %0;" : : "r" (va>>PAGE_SHIFT) :
+ "memory");
   }




So wonder has this patchset been tested on Big/Little Hardware?


This series only adds facility to report the correct MIDR to the guest.
If your platform requires more, then it would be necessary send a patch for

Xen.


Do you have any suggestions? Besides MIDR/ACTLR/Cacheline, are there more

needed?

Having a bit more details from your side would be helpful. At the moment, I have
no clue what's going on.


As from the linux kernel commit:
 on i.MX8QM TO1.0, there is an issue: the bus width between A53-CCI-A72
 is limited to 36bits.TLB maintenance through DVM messages over AR channel,
 some bits will be forced(truncated) to zero as the followings:

 ASID[15:12] is forced to 0
 VA[48:45] is forced to 0
 VA[44:41] is forced to 0
 VA[39:36] is forced to 0

 This issue will result in the TLB aintenance across the clusters not 
working
 as expected due to some VA and ASID bits get truncated and forced to be 
zero.

 The SW workaround is: use the vmalle1is if VA larger than 36bits or
 ASID[15:12] is not zero, otherwise, we use original TLB maintenance path.

When doing tlb maintenance through DVM from A53 to A72, some bits are forced
to 0, this means TLB may not be really invalidated from A72 perspective.

Currently I am trying a domu with big/little capability, but not allowing 
big/little vcpu
migration.

I am not sure whether this hardware issue impacts DomU or not. Or it is 
software issue.
As you could see dom0 has 6 vcpus, I did a stress test and not found issue on 
dom0.


There are a major difference between Dom0 and DomU in your setup. Dom0 
vCPUs are pinned to a specific pCPU, so they can't move around. For 
DomU, each vCPU are pinned to a set of pCPUs, so they can move around.


But, did you check the DomU has the workaround enabled? I am asking that 
because it looks like to me the way to detect the workaround is based on 
a device (scu) and not processor. So I am not convinced that DomU is 
actually using your workaround.


Cheers,

--
Julien Grall

___
Xen-devel mailing list
Xen-devel@lists.xenproject.org
https://lists.xenproject.org/mailman/listinfo/xen-devel

Re: [Xen-devel] [PATCH v4 0/7] unsafe big.LITTLE support

2018-03-08 Thread Peng Fan


> -Original Message-
> From: Julien Grall [mailto:julien.gr...@arm.com]
> Sent: 2018年3月8日 20:30
> To: Peng Fan <peng@nxp.com>; Peng Fan <van.free...@gmail.com>;
> Stefano Stabellini <sstabell...@kernel.org>
> Cc: xen-de...@lists.xen.org
> Subject: Re: [Xen-devel] [PATCH v4 0/7] unsafe big.LITTLE support
> 
> Hi,
> 
> On 08/03/18 12:23, Peng Fan wrote:
> >
> >
> >> -Original Message-
> >> From: Xen-devel [mailto:xen-devel-boun...@lists.xenproject.org] On
> >> Behalf Of Julien Grall
> >> Sent: 2018年3月8日 19:04
> >> To: Peng Fan <van.free...@gmail.com>; Stefano Stabellini
> >> <sstabell...@kernel.org>
> >> Cc: xen-de...@lists.xen.org
> >> Subject: Re: [Xen-devel] [PATCH v4 0/7] unsafe big.LITTLE support
> >>
> >> Hello,
> >>
> >> On 08/03/18 06:15, Peng Fan wrote:
> >>> Hi Stefano,
> >>> On Fri, Mar 02, 2018 at 11:05:54AM -0800, Stefano Stabellini wrote:
> >>>> Hi all,
> >>>>
> >>>> This series changes the initialization of two virtual registers to
> >>>> make sure they match the value of the underlying physical cpu.
> >>>>
> >>>> It also disables cpus different from the boot cpu, unless a newly
> >>>> introduced command line option is specified. In that case, it
> >>>> explains how to setup the system to avoid corruptions, which
> >>>> involves manually specifying the cpu affinity of all domains,
> >>>> because the scheduler still lacks big.LITTLE support.
> >>>>
> >>>> In the uncommon case of a system where the cacheline sizes are
> >>>> different  across cores, it disables all cores that have a
> >>>> different dcache line size from the boot cpu. In fact, it is not
> >>>> sufficient to use the dcache line  size of the current cpu, it
> >>>> would be necessary to use the minimum across  all dcache line sizes
> >>>> of all cores.  Given that it is actually uncommon  even in
> >>>> big.LITTLE systems, just disable cpus
> >> for now.
> >>>>
> >>>> The first patch in the series is a fix for the way we read the
> >>>> dcache line size.
> >>>
> >>> I am trying the patchset, but I meet issue that Guest Big/Little
> >>> with vcpu not working properly. As my current hardware has an issue
> >>> which has fix in Kernel,
> >>> https://emea01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fs
> >>> ou
> >>>
> >>
> rce.codeaurora.org%2Fexternal%2Fimx%2Flinux-imx%2Fcommit%2F%3Fh%3Di
> >> mx_
> >>>
> >>
> 4.9.51_imx8_beta2%26id%3D917cc3a8db2f3609ef8e2f59e7bcd31aa2cd4e59&
> >> data
> >>>
> >>
> =02%7C01%7Cpeng.fan%40nxp.com%7Cc7f074c6708647441f2b08d584e45fec
> >> %7C686
> >>>
> >>
> ea1d3bc2b4c6fa92cd99c5c301635%7C0%7C0%7C636561038755176475
> >> =S%2BI
> >>> 7g1BwUDgAnXGP8%2FFc1bVZZTIimd3J7%2FkTIdeWL4o%3D=0
> >>
> >> Can you describe what you mean by not working properly? Also what is
> >> your setup? Did you pin the different vCPUs as requested by the
> documentation.
> >>
> >
> > I may not describe clearly. It is domu with big/little guest could not 
> > bootup
> correctly.
> 
> What do you mean by "could not bootup correctly"? Can you please provide logs
> or a bit more feedback. Without them, it is nearly impossible to me to help to
> debugging the problem.
> 
> > For dom0, the args are
> > dom0_mem=2048M dom0_max_vcpus=6 dom0_vcpus_pin=true
> hmp-unsafe=true
> >
> > For domu
> > vcpus = 4
> >
> > #vcpu pin
> > cpus = ['2-3', '2-3', '4-5', '4-5']
> >
> > The hardware is cpu0-3 is A53, cpu4-5 is A72.
> 
> What does "xl vcpu-list" give you?

# xl vcpu-list
NameID  VCPU   CPU State   Time(s) Affinity 
(Hard / Soft)
Domain-0 0 00   r--   7.4  0 / all
Domain-0 0 11   -b-   9.4  1 / all
Domain-0 0 22   -b-   2.2  2 / all
Domain-0 0 33   -b-   2.6  3 / all
Domain-0 0 44   -b-   2.1  4 / all
Domain-0 0 55   -b-   3.3  5 / all
DomU 1 02   -b-   9.6  2-3 / all
DomU

Re: [Xen-devel] [PATCH v4 0/7] unsafe big.LITTLE support

2018-03-08 Thread Julien Grall

Hi,

On 08/03/18 12:23, Peng Fan wrote:




-Original Message-
From: Xen-devel [mailto:xen-devel-boun...@lists.xenproject.org] On Behalf Of
Julien Grall
Sent: 2018年3月8日 19:04
To: Peng Fan <van.free...@gmail.com>; Stefano Stabellini
<sstabell...@kernel.org>
Cc: xen-de...@lists.xen.org
Subject: Re: [Xen-devel] [PATCH v4 0/7] unsafe big.LITTLE support

Hello,

On 08/03/18 06:15, Peng Fan wrote:

Hi Stefano,
On Fri, Mar 02, 2018 at 11:05:54AM -0800, Stefano Stabellini wrote:

Hi all,

This series changes the initialization of two virtual registers to
make sure they match the value of the underlying physical cpu.

It also disables cpus different from the boot cpu, unless a newly
introduced command line option is specified. In that case, it
explains how to setup the system to avoid corruptions, which involves
manually specifying the cpu affinity of all domains, because the
scheduler still lacks big.LITTLE support.

In the uncommon case of a system where the cacheline sizes are
different  across cores, it disables all cores that have a different
dcache line size from the boot cpu. In fact, it is not sufficient to
use the dcache line  size of the current cpu, it would be necessary to
use the minimum across  all dcache line sizes of all cores.  Given
that it is actually uncommon  even in big.LITTLE systems, just disable cpus

for now.


The first patch in the series is a fix for the way we read the dcache
line size.


I am trying the patchset, but I meet issue that Guest Big/Little with
vcpu not working properly. As my current hardware has an issue which
has fix in Kernel,
https://emea01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fsou


rce.codeaurora.org%2Fexternal%2Fimx%2Flinux-imx%2Fcommit%2F%3Fh%3Di
mx_



4.9.51_imx8_beta2%26id%3D917cc3a8db2f3609ef8e2f59e7bcd31aa2cd4e59&
data



=02%7C01%7Cpeng.fan%40nxp.com%7Cc7f074c6708647441f2b08d584e45fec
%7C686



ea1d3bc2b4c6fa92cd99c5c301635%7C0%7C0%7C636561038755176475
=S%2BI

7g1BwUDgAnXGP8%2FFc1bVZZTIimd3J7%2FkTIdeWL4o%3D=0


Can you describe what you mean by not working properly? Also what is your
setup? Did you pin the different vCPUs as requested by the documentation.



I may not describe clearly. It is domu with big/little guest could not bootup 
correctly.


What do you mean by "could not bootup correctly"? Can you please provide 
logs or a bit more feedback. Without them, it is nearly impossible to me 
to help to debugging the problem.



For dom0, the args are
dom0_mem=2048M dom0_max_vcpus=6 dom0_vcpus_pin=true hmp-unsafe=true

For domu
vcpus = 4

#vcpu pin
cpus = ['2-3', '2-3', '4-5', '4-5']

The hardware is cpu0-3 is A53, cpu4-5 is A72.


What does "xl vcpu-list" give you?



I do not met issue for dom0.



I am not sure whether this issue cause DomU big/Little not work.


Well, I would recommend to speak with NXP whether this errata affects TLB
flush for Hypervisor Page-Table or Stage-2 Page-Table.


I tried the following, but no help. Not sure my patch is correct. I think it
affects stage2 TLB.

--- a/xen/include/asm-arm/arm64/flushtlb.h
+++ b/xen/include/asm-arm/arm64/flushtlb.h
@@ -6,7 +6,7 @@ static inline void flush_tlb_local(void)
  {
  asm volatile(
  "dsb sy;"
-"tlbi vmalls12e1;"
+"tlbi alle1;"
  "dsb sy;"
  "isb;"
  : : : "memory");
@@ -17,7 +17,7 @@ static inline void flush_tlb(void)
  {
  asm volatile(
  "dsb sy;"
-"tlbi vmalls12e1is;"
+"tlbi alle1;"


I am not sure why you drop the innershareable here?


  "dsb sy;"
  "isb;"
  : : : "memory");
@@ -39,7 +39,7 @@ static inline void flush_tlb_all(void)
  {
  asm volatile(
  "dsb sy;"
-"tlbi alle1is;"
+"tlbi alle1;"


Ditto.


  "dsb sy;"
  "isb;"
  : : : "memory");
--- a/xen/include/asm-arm/arm64/page.h
+++ b/xen/include/asm-arm/arm64/page.h
@@ -74,14 +74,16 @@ static inline void flush_xen_data_tlb_local(void)
  /* Flush TLB of local processor for address va. */
  static inline void  __flush_xen_data_tlb_one_local(vaddr_t va)
  {
-asm volatile("tlbi vae2, %0;" : : "r" (va>>PAGE_SHIFT) : "memory");
+   flush_xen_data_tlb_local();
+//asm volatile("tlbi vae2, %0;" : : "r" (va>>PAGE_SHIFT) : "memory");
  }

  /* Flush TLB of all processors in the inner-shareable domain for
   * address va. */
  static inline void __flush_xen_data_tlb_one(vaddr_t va)
  {
-asm volatile("tlbi vae2is, %0;" : : "r" (va>>PAGE_SHIFT) : "memory");
+   flush_xen_data_tlb_local();


Why do you replace an innershareable call to a local call? Is it part of 
the errata?



+//asm volatile("tlbi vae2is, 

Re: [Xen-devel] [PATCH v4 0/7] unsafe big.LITTLE support

2018-03-08 Thread Peng Fan


> -Original Message-
> From: Xen-devel [mailto:xen-devel-boun...@lists.xenproject.org] On Behalf Of
> Julien Grall
> Sent: 2018年3月8日 19:04
> To: Peng Fan <van.free...@gmail.com>; Stefano Stabellini
> <sstabell...@kernel.org>
> Cc: xen-de...@lists.xen.org
> Subject: Re: [Xen-devel] [PATCH v4 0/7] unsafe big.LITTLE support
> 
> Hello,
> 
> On 08/03/18 06:15, Peng Fan wrote:
> > Hi Stefano,
> > On Fri, Mar 02, 2018 at 11:05:54AM -0800, Stefano Stabellini wrote:
> >> Hi all,
> >>
> >> This series changes the initialization of two virtual registers to
> >> make sure they match the value of the underlying physical cpu.
> >>
> >> It also disables cpus different from the boot cpu, unless a newly
> >> introduced command line option is specified. In that case, it
> >> explains how to setup the system to avoid corruptions, which involves
> >> manually specifying the cpu affinity of all domains, because the
> >> scheduler still lacks big.LITTLE support.
> >>
> >> In the uncommon case of a system where the cacheline sizes are
> >>different  across cores, it disables all cores that have a different
> >>dcache line size from the boot cpu. In fact, it is not sufficient to
> >>use the dcache line  size of the current cpu, it would be necessary to
> >>use the minimum across  all dcache line sizes of all cores.  Given
> >>that it is actually uncommon  even in big.LITTLE systems, just disable cpus
> for now.
> >>
> >> The first patch in the series is a fix for the way we read the dcache
> >> line size.
> >
> > I am trying the patchset, but I meet issue that Guest Big/Little with
> > vcpu not working properly. As my current hardware has an issue which
> > has fix in Kernel,
> > https://emea01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fsou
> >
> rce.codeaurora.org%2Fexternal%2Fimx%2Flinux-imx%2Fcommit%2F%3Fh%3Di
> mx_
> >
> 4.9.51_imx8_beta2%26id%3D917cc3a8db2f3609ef8e2f59e7bcd31aa2cd4e59&
> data
> >
> =02%7C01%7Cpeng.fan%40nxp.com%7Cc7f074c6708647441f2b08d584e45fec
> %7C686
> >
> ea1d3bc2b4c6fa92cd99c5c301635%7C0%7C0%7C636561038755176475
> =S%2BI
> > 7g1BwUDgAnXGP8%2FFc1bVZZTIimd3J7%2FkTIdeWL4o%3D=0
> 
> Can you describe what you mean by not working properly? Also what is your
> setup? Did you pin the different vCPUs as requested by the documentation.
> 

I may not describe clearly. It is domu with big/little guest could not bootup 
correctly.
For dom0, the args are 
dom0_mem=2048M dom0_max_vcpus=6 dom0_vcpus_pin=true hmp-unsafe=true

For domu
vcpus = 4

#vcpu pin
cpus = ['2-3', '2-3', '4-5', '4-5']

The hardware is cpu0-3 is A53, cpu4-5 is A72.

I do not met issue for dom0.

> >
> > I am not sure whether this issue cause DomU big/Little not work.
> 
> Well, I would recommend to speak with NXP whether this errata affects TLB
> flush for Hypervisor Page-Table or Stage-2 Page-Table.

I tried the following, but no help. Not sure my patch is correct. I think it
affects stage2 TLB.

--- a/xen/include/asm-arm/arm64/flushtlb.h
+++ b/xen/include/asm-arm/arm64/flushtlb.h
@@ -6,7 +6,7 @@ static inline void flush_tlb_local(void)
 {
 asm volatile(
 "dsb sy;"
-"tlbi vmalls12e1;"
+"tlbi alle1;"
 "dsb sy;"
 "isb;"
 : : : "memory");
@@ -17,7 +17,7 @@ static inline void flush_tlb(void)
 {
 asm volatile(
 "dsb sy;"
-"tlbi vmalls12e1is;"
+"tlbi alle1;"
 "dsb sy;"
 "isb;"
 : : : "memory");
@@ -39,7 +39,7 @@ static inline void flush_tlb_all(void)
 {
 asm volatile(
 "dsb sy;"
-"tlbi alle1is;"
+"tlbi alle1;"
 "dsb sy;"
 "isb;"
 : : : "memory");
--- a/xen/include/asm-arm/arm64/page.h
+++ b/xen/include/asm-arm/arm64/page.h
@@ -74,14 +74,16 @@ static inline void flush_xen_data_tlb_local(void)
 /* Flush TLB of local processor for address va. */
 static inline void  __flush_xen_data_tlb_one_local(vaddr_t va)
 {
-asm volatile("tlbi vae2, %0;" : : "r" (va>>PAGE_SHIFT) : "memory");
+   flush_xen_data_tlb_local();
+//asm volatile("tlbi vae2, %0;" : : "r" (va>>PAGE_SHIFT) : "memory");
 }

 /* Flush TLB of all processors in the inner-shareable domain for
  * address va. */
 static inline void __flush_xen_data_tlb_one(vaddr_t va)
 {
-asm volatile("tlbi vae2is, %0;" : : "r" (va>>PAGE_SHIFT) : "memory");
+   flush_xen_data_

Re: [Xen-devel] [PATCH v4 0/7] unsafe big.LITTLE support

2018-03-08 Thread Julien Grall

Hello,

On 08/03/18 06:15, Peng Fan wrote:

Hi Stefano,
On Fri, Mar 02, 2018 at 11:05:54AM -0800, Stefano Stabellini wrote:

Hi all,

This series changes the initialization of two virtual registers to make
sure they match the value of the underlying physical cpu.

It also disables cpus different from the boot cpu, unless a newly
introduced command line option is specified. In that case, it explains
how to setup the system to avoid corruptions, which involves manually
specifying the cpu affinity of all domains, because the scheduler still
lacks big.LITTLE support.

In the uncommon case of a system where the cacheline sizes are different
across cores, it disables all cores that have a different dcache line size
from the boot cpu. In fact, it is not sufficient to use the dcache line
size of the current cpu, it would be necessary to use the minimum across
all dcache line sizes of all cores.  Given that it is actually uncommon
even in big.LITTLE systems, just disable cpus for now.

The first patch in the series is a fix for the way we read the dcache
line size.


I am trying the patchset, but I meet issue that Guest Big/Little with
vcpu not working properly. As my current hardware has an issue
which has fix in Kernel, 
https://source.codeaurora.org/external/imx/linux-imx/commit/?h=imx_4.9.51_imx8_beta2=917cc3a8db2f3609ef8e2f59e7bcd31aa2cd4e59


Can you describe what you mean by not working properly? Also what is 
your setup? Did you pin the different vCPUs as requested by the 
documentation.




I am not sure whether this issue cause DomU big/Little not work.


Well, I would recommend to speak with NXP whether this errata affects 
TLB flush for Hypervisor Page-Table or Stage-2 Page-Table.



So wonder has this patchset been tested on Big/Little Hardware?


This series only adds facility to report the correct MIDR to the guest. 
If your platform requires more, then it would be necessary send a patch 
for Xen.


Cheers,

--
Julien Grall

___
Xen-devel mailing list
Xen-devel@lists.xenproject.org
https://lists.xenproject.org/mailman/listinfo/xen-devel

Re: [Xen-devel] [PATCH v4 0/7] unsafe big.LITTLE support

2018-03-07 Thread Peng Fan
Hi Stefano,
On Fri, Mar 02, 2018 at 11:05:54AM -0800, Stefano Stabellini wrote:
>Hi all,
>
>This series changes the initialization of two virtual registers to make
>sure they match the value of the underlying physical cpu.
>
>It also disables cpus different from the boot cpu, unless a newly
>introduced command line option is specified. In that case, it explains
>how to setup the system to avoid corruptions, which involves manually
>specifying the cpu affinity of all domains, because the scheduler still
>lacks big.LITTLE support.
>
>In the uncommon case of a system where the cacheline sizes are different
>across cores, it disables all cores that have a different dcache line size
>from the boot cpu. In fact, it is not sufficient to use the dcache line
>size of the current cpu, it would be necessary to use the minimum across
>all dcache line sizes of all cores.  Given that it is actually uncommon
>even in big.LITTLE systems, just disable cpus for now.
>
>The first patch in the series is a fix for the way we read the dcache
>line size.

I am trying the patchset, but I meet issue that Guest Big/Little with
vcpu not working properly. As my current hardware has an issue
which has fix in Kernel, 
https://source.codeaurora.org/external/imx/linux-imx/commit/?h=imx_4.9.51_imx8_beta2=917cc3a8db2f3609ef8e2f59e7bcd31aa2cd4e59

I am not sure whether this issue cause DomU big/Little not work.
So wonder has this patchset been tested on Big/Little Hardware?

Thanks,
Peng.

>
>Cheers,
>
>Stefano
>
>
>Julien Grall (1):
>  xen/arm: Park CPUs with a MIDR different from the boot CPU.
>
>Stefano Stabellini (6):
>  xen/arm: Read the dcache line size from CTR register
>  xen/arm: make processor a per cpu variable
>  xen/arm: read ACTLR on the pcpu where the vcpu will run
>  xen/arm: set VPIDR based on the MIDR value of the underlying pCPU
>  xen/arm: update the docs about heterogeneous computing
>  xen/arm: disable CPUs with different dcache line sizes
>
> docs/misc/arm/big.LITTLE.txt| 46 +
> docs/misc/xen-command-line.markdown | 15 
> xen/arch/arm/arm32/head.S   |  2 +-
> xen/arch/arm/arm64/head.S   |  2 +-
> xen/arch/arm/domain.c   | 15 ++--
> xen/arch/arm/processor.c|  8 +++
> xen/arch/arm/setup.c| 17 ++
> xen/arch/arm/smpboot.c  | 39 +++
> xen/arch/arm/vcpreg.c   |  4 ++--
> xen/include/asm-arm/cpregs.h|  2 ++
> xen/include/asm-arm/domain.h|  3 ---
> xen/include/asm-arm/page.h  | 27 +++---
> 12 files changed, 138 insertions(+), 42 deletions(-)
> create mode 100644 docs/misc/arm/big.LITTLE.txt
>
>___
>Xen-devel mailing list
>Xen-devel@lists.xenproject.org
>https://lists.xenproject.org/mailman/listinfo/xen-devel

-- 

___
Xen-devel mailing list
Xen-devel@lists.xenproject.org
https://lists.xenproject.org/mailman/listinfo/xen-devel

[Xen-devel] [PATCH v4 0/7] unsafe big.LITTLE support

2018-03-02 Thread Stefano Stabellini
Hi all,

This series changes the initialization of two virtual registers to make
sure they match the value of the underlying physical cpu.

It also disables cpus different from the boot cpu, unless a newly
introduced command line option is specified. In that case, it explains
how to setup the system to avoid corruptions, which involves manually
specifying the cpu affinity of all domains, because the scheduler still
lacks big.LITTLE support.

In the uncommon case of a system where the cacheline sizes are different
across cores, it disables all cores that have a different dcache line size
from the boot cpu. In fact, it is not sufficient to use the dcache line
size of the current cpu, it would be necessary to use the minimum across
all dcache line sizes of all cores.  Given that it is actually uncommon
even in big.LITTLE systems, just disable cpus for now.

The first patch in the series is a fix for the way we read the dcache
line size.

Cheers,

Stefano


Julien Grall (1):
  xen/arm: Park CPUs with a MIDR different from the boot CPU.

Stefano Stabellini (6):
  xen/arm: Read the dcache line size from CTR register
  xen/arm: make processor a per cpu variable
  xen/arm: read ACTLR on the pcpu where the vcpu will run
  xen/arm: set VPIDR based on the MIDR value of the underlying pCPU
  xen/arm: update the docs about heterogeneous computing
  xen/arm: disable CPUs with different dcache line sizes

 docs/misc/arm/big.LITTLE.txt| 46 +
 docs/misc/xen-command-line.markdown | 15 
 xen/arch/arm/arm32/head.S   |  2 +-
 xen/arch/arm/arm64/head.S   |  2 +-
 xen/arch/arm/domain.c   | 15 ++--
 xen/arch/arm/processor.c|  8 +++
 xen/arch/arm/setup.c| 17 ++
 xen/arch/arm/smpboot.c  | 39 +++
 xen/arch/arm/vcpreg.c   |  4 ++--
 xen/include/asm-arm/cpregs.h|  2 ++
 xen/include/asm-arm/domain.h|  3 ---
 xen/include/asm-arm/page.h  | 27 +++---
 12 files changed, 138 insertions(+), 42 deletions(-)
 create mode 100644 docs/misc/arm/big.LITTLE.txt

___
Xen-devel mailing list
Xen-devel@lists.xenproject.org
https://lists.xenproject.org/mailman/listinfo/xen-devel