<feed xmlns='http://www.w3.org/2005/Atom'>
<title>kernel.git/arch/arm/common/mcpm_entry.c, branch linux-5.1.y</title>
<subtitle>Hosts the 0x221E linux distro kernel.
</subtitle>
<id>https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-5.1.y</id>
<link rel='self' href='https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-5.1.y'/>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/'/>
<updated>2019-02-26T11:32:54Z</updated>
<entry>
<title>ARM: 8847/1: pm: fix HYP/SVC mode mismatch when MCPM is used</title>
<updated>2019-02-26T11:32:54Z</updated>
<author>
<name>Marek Szyprowski</name>
</author>
<published>2019-02-18T08:31:41Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=ca70ea43f80c98582f5ffbbd1e6f4da2742da0c4'/>
<id>urn:sha1:ca70ea43f80c98582f5ffbbd1e6f4da2742da0c4</id>
<content type='text'>
MCPM does a soft reset of the CPUs and uses common cpu_resume() routine to
perform low-level platform initialization. This results in a try to install
HYP stubs for the second time for each CPU and results in false HYP/SVC
mode mismatch detection. The HYP stubs are already installed at the
beginning of the kernel initialization on the boot CPU (head.S) or in the
secondary_startup() for other CPUs. To fix this issue MCPM code should use
a cpu_resume() routine without HYP stubs installation.

This change fixes HYP/SVC mode mismatch on Samsung Exynos5422-based Odroid
XU3/XU4/HC1 boards.

Fixes: 3721924c8154 ("ARM: 8081/1: MCPM: provide infrastructure to allow for MCPM loopback")
Signed-off-by: Marek Szyprowski &lt;m.szyprowski@samsung.com&gt;
Acked-by: Nicolas Pitre &lt;nico@linaro.org&gt;
Tested-by: Anand Moon &lt;linux.amoon@gmail.com&gt;
Signed-off-by: Russell King &lt;rmk+kernel@armlinux.org.uk&gt;
</content>
</entry>
<entry>
<title>ARM: mcpm, perf/arm-cci: export mcpm_is_available</title>
<updated>2018-05-29T15:53:16Z</updated>
<author>
<name>Arnd Bergmann</name>
</author>
<published>2018-05-28T15:44:36Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=73acc0315cd72174729141856c6607d1c91419cb'/>
<id>urn:sha1:73acc0315cd72174729141856c6607d1c91419cb</id>
<content type='text'>
Now that the ARM CCI PMU driver can be built as a loadable module,
we get a link failure when MCPM is enabled:

ERROR: "mcpm_is_available" [drivers/perf/arm-cci.ko] undefined!

The simplest fix is to export that helper function.

Fixes: 8b0c93c20ef7 ("perf/arm-cci: Allow building as a module")
Acked-by: Nicolas Pitre &lt;nico@linaro.org&gt;
Acked-by: Russell King &lt;rmk+kernel@armlinux.org.uk&gt;
Signed-off-by: Arnd Bergmann &lt;arnd@arndb.de&gt;
Signed-off-by: Will Deacon &lt;will.deacon@arm.com&gt;
</content>
</entry>
<entry>
<title>ARM: 8675/1: MCPM: ensure not to enter __hyp_soft_restart from loopback and cpu_power_down</title>
<updated>2017-05-23T16:26:08Z</updated>
<author>
<name>Sudeep Holla</name>
</author>
<published>2017-05-18T16:09:59Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=29226b198bb26f8e23985d011a9301cee5550da8'/>
<id>urn:sha1:29226b198bb26f8e23985d011a9301cee5550da8</id>
<content type='text'>
Commit 9da5ac236de6 ("ARM: soft-reboot into same mode that we entered
the kernel") added support to enter the new kernel in the same processor
mode as the previous one when we soft-reboot from one kernel into
another by pass a flag to cpu_reset() so it knows what to do exactly.

However it missed to make similar changes in MCPM code. Due to the
missing flag, the CPUs enter HYP mode which is not supported with MCPM.
MCPM works only in secure mode as it manages CCI.

This patch aligns the cpu_reset call in MCPM with other changes in the
above mentioned commit by making phys_reset_t to follow the prototype
of cpu_reset().

Fixes: 9da5ac236de6 ("ARM: soft-reboot into same mode that we entered the kernel")
Acked-by: Nicolas Pitre &lt;nico@linaro.org&gt;
Signed-off-by: Sudeep Holla &lt;sudeep.holla@arm.com&gt;
Signed-off-by: Russell King &lt;rmk+kernel@armlinux.org.uk&gt;
</content>
</entry>
<entry>
<title>ARM: 8641/1: treewide: Replace uses of virt_to_phys with __pa_symbol</title>
<updated>2017-02-28T11:06:10Z</updated>
<author>
<name>Florian Fainelli</name>
</author>
<published>2017-01-15T02:59:29Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=64fc2a947a9873700929ec0ef02b4654a04e0476'/>
<id>urn:sha1:64fc2a947a9873700929ec0ef02b4654a04e0476</id>
<content type='text'>
All low-level PM/SMP code using virt_to_phys() should actually use
__pa_symbol() against kernel symbols. Update code where relevant to move
away from virt_to_phys().

Acked-by: Russell King &lt;rmk+kernel@armlinux.org.uk&gt;
Reviewed-by: Laura Abbott &lt;labbott@redhat.com&gt;
Signed-off-by: Florian Fainelli &lt;f.fainelli@gmail.com&gt;
Signed-off-by: Russell King &lt;rmk+kernel@arm.linux.org.uk&gt;
</content>
</entry>
<entry>
<title>ARM: MCPM: remove residency argument from mcpm_cpu_suspend()</title>
<updated>2015-05-06T15:47:10Z</updated>
<author>
<name>Nicolas Pitre</name>
</author>
<published>2015-04-28T19:51:19Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=7895f73169ade9a74940ae6b0b4ee82faf286861'/>
<id>urn:sha1:7895f73169ade9a74940ae6b0b4ee82faf286861</id>
<content type='text'>
This is currently unused.

If a suspend must be limited to CPU level only by preventing the last man
from triggering a cluster level suspend then this should be determined
according to many other criteria the MCPM layer is currently not aware of.
It is unlikely that mcpm_cpu_suspend() would be the proper conduit for
that information anyway.

Signed-off-by: Nicolas Pitre &lt;nico@linaro.org&gt;
Acked-by: Dave Martin &lt;Dave.Martin@arm.com&gt;
</content>
</entry>
<entry>
<title>ARM: MCPM: add references to the available documentation in the code</title>
<updated>2015-05-06T15:46:15Z</updated>
<author>
<name>Nicolas Pitre</name>
</author>
<published>2015-04-28T18:51:36Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=1c2c7d51c8101ab3c5d8585713d2dcd52d77d33e'/>
<id>urn:sha1:1c2c7d51c8101ab3c5d8585713d2dcd52d77d33e</id>
<content type='text'>
Signed-off-by: Nicolas Pitre &lt;nico@linaro.org&gt;
Acked-by: Dave Martin &lt;Dave.Martin@arm.com&gt;
</content>
</entry>
<entry>
<title>ARM: MCPM: make internal helpers private to the core code</title>
<updated>2015-05-06T15:45:46Z</updated>
<author>
<name>Nicolas Pitre</name>
</author>
<published>2015-04-28T18:11:07Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=7cc8b991cdc985aaa73bf9c429c810cd442fb74d'/>
<id>urn:sha1:7cc8b991cdc985aaa73bf9c429c810cd442fb74d</id>
<content type='text'>
This concerns the following helpers:

	__mcpm_cpu_going_down()
	__mcpm_cpu_down()
	__mcpm_outbound_enter_critical()
	__mcpm_outbound_leave_critical()
	__mcpm_cluster_state()

They are and should only be used by the core code now.  Therefore their
declarations are removed from mcpm.h and their definitions are made
static, hence the need to move them before their users which accounts
for the bulk of this patch.

This left the mcpm_sync_struct definition at an odd location, therefore
it is moved as well with some comment clarifications.

Signed-off-by: Nicolas Pitre &lt;nico@linaro.org&gt;
Acked-by: Dave Martin &lt;Dave.Martin@arm.com&gt;
</content>
</entry>
<entry>
<title>ARM: MCPM: remove backward compatibility code</title>
<updated>2015-05-06T15:43:12Z</updated>
<author>
<name>Nicolas Pitre</name>
</author>
<published>2015-04-28T17:44:00Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=77404d81cadf192cc1261d6269f622a06b83cdd5'/>
<id>urn:sha1:77404d81cadf192cc1261d6269f622a06b83cdd5</id>
<content type='text'>
Now that no one uses the old callbacks anymore, let's remove them
and associated support code.

Signed-off-by: Nicolas Pitre &lt;nico@linaro.org&gt;
Acked-by: Dave Martin &lt;Dave.Martin@arm.com&gt;
</content>
</entry>
<entry>
<title>ARM: MCPM: move the algorithmic complexity to the core code</title>
<updated>2015-04-03T19:52:46Z</updated>
<author>
<name>Nicolas Pitre</name>
</author>
<published>2015-03-11T22:16:13Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=d3a875444ad8d5e64c5a932361ca579312e49801'/>
<id>urn:sha1:d3a875444ad8d5e64c5a932361ca579312e49801</id>
<content type='text'>
All backends are reimplementing a variation of the same CPU reference
count handling. They are also responsible for driving the MCPM special
low-level locking. This is needless duplication, involving algorithmic
requirements that are not necessarily obvious to the uninitiated.
And from past code review experience, those were all initially
implemented badly.

After 3 years, it is time to refactor as much common code to the core
MCPM facility to make the backends as simple as possible.  To avoid a
flag day, the new scheme is introduced in parallel to the existing
backend interface.  When all backends are converted over, the
compatibility interface could be removed.

The new MCPM backend interface implements simpler methods addressing
very platform specific tasks performed under lock protection while
keeping the algorithmic complexity and race avoidance local to the
core code.

Signed-off-by: Nicolas Pitre &lt;nico@linaro.org&gt;
Tested-by: Daniel Lezcano &lt;daniel.lezcano@linaro.org&gt;
Signed-off-by: Olof Johansson &lt;olof@lixom.net&gt;
</content>
</entry>
<entry>
<title>ARM: 8081/1: MCPM: provide infrastructure to allow for MCPM loopback</title>
<updated>2014-07-18T10:58:00Z</updated>
<author>
<name>Nicolas Pitre</name>
</author>
<published>2014-06-24T17:32:51Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=3721924c81541d828d73d0e36dcbae8fd93f0885'/>
<id>urn:sha1:3721924c81541d828d73d0e36dcbae8fd93f0885</id>
<content type='text'>
The kernel already has the responsibility to handle resources such as the

CCI when hotplugging CPUs, during the booting of secondary CPUs, and when
resuming from suspend/idle.  It would be more coherent and less confusing
if the CCI for the boot CPU (or cluster)  was also initialized by the
kernel rather than expecting the firmware/bootloader to do it and only in
that case. After all, the kernel has all the necessary code already and
the bootloader shouldn't have to care at all.

The CCI may be turned on only when the cache is off. Leveraging the CPU
suspend code to loop back through the low-level MCPM entry point is all
that is needed to properly turn on the CCI from the kernel by using the
same code as during secondary boot.

Let's provide a generic MCPM loopback function that can be invoked by
backend initialization code to set things (CCI or similar) on the boot
CPU just as it is done for the other CPUs.

Signed-off-by: Nicolas Pitre &lt;nico@linaro.org&gt;
Reviewed-by: Kevin Hilman &lt;khilman@linaro.org&gt;
Tested-by: Kevin Hilman &lt;khilman@linaro.org&gt;
Tested-by: Doug Anderson &lt;dianders@chromium.org&gt;
Signed-off-by: Russell King &lt;rmk+kernel@arm.linux.org.uk&gt;
</content>
</entry>
</feed>
