<p>Subrata Banik has uploaded this change for <strong>review</strong>.</p><p><a href="https://review.coreboot.org/26034">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">cpu/x86: Add support to run function on single AP<br><br>This patch ensures that user can select a specific AP to run<br>a function.<br><br>BUG=b:74436746<br>BRANCH=none<br>TEST=Able to run functions over APs with argument.<br><br>Change-Id: Iff2f34900ce2a96ef6ff0779b651f25ebfc739ad<br>Signed-off-by: Subrata Banik <subrata.banik@intel.com><br>---<br>M src/cpu/x86/mp_init.c<br>M src/include/cpu/x86/mp.h<br>2 files changed, 23 insertions(+), 0 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">git pull ssh://review.coreboot.org:29418/coreboot refs/changes/34/26034/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/src/cpu/x86/mp_init.c b/src/cpu/x86/mp_init.c</span><br><span>index ba3f309..63e57f3 100644</span><br><span>--- a/src/cpu/x86/mp_init.c</span><br><span>+++ b/src/cpu/x86/mp_init.c</span><br><span>@@ -964,6 +964,26 @@</span><br><span>   }</span><br><span> }</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+static int ap_number;</span><br><span style="color: hsl(120, 100%, 40%);">+static mp_callback_t single_ap_callback;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+/* API to run a single function on a give AP with argument */</span><br><span style="color: hsl(120, 100%, 40%);">+static void run_on_single_aps(void *arg)</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+     if (cpu_index() != ap_number)</span><br><span style="color: hsl(120, 100%, 40%);">+         return;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+     single_ap_callback(arg);</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+int mp_run_on_this_ap(void (*func)(void *), void *arg, int ap, long expire_us)</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+      single_ap_callback = func;</span><br><span style="color: hsl(120, 100%, 40%);">+    /* Set callback AP number */</span><br><span style="color: hsl(120, 100%, 40%);">+  ap_number = ap;</span><br><span style="color: hsl(120, 100%, 40%);">+       return run_ap_work(run_on_single_aps, arg, expire_us);</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> int mp_run_on_aps(void (*func)(void *), void *arg, long expire_us)</span><br><span> {</span><br><span>       return run_ap_work(func, arg, expire_us);</span><br><span>diff --git a/src/include/cpu/x86/mp.h b/src/include/cpu/x86/mp.h</span><br><span>index e5bfdd3..df3d5b1 100644</span><br><span>--- a/src/include/cpu/x86/mp.h</span><br><span>+++ b/src/include/cpu/x86/mp.h</span><br><span>@@ -131,6 +131,9 @@</span><br><span> /* Like mp_run_on_aps() but also runs func on BSP. */</span><br><span> int mp_run_on_all_cpus(void (*func)(void *), void *arg, long expire_us);</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+/* Like mp_run_on_aps() but only runs on single AP specific by AP number */</span><br><span style="color: hsl(120, 100%, 40%);">+int mp_run_on_this_ap(void (*func)(void *), void *arg, int ap, long expire_us);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> /*</span><br><span>  * Park all APs to prepare for OS boot. This is handled automatically</span><br><span>  * by the coreboot infrastructure.</span><br><span></span><br></pre><p>To view, visit <a href="https://review.coreboot.org/26034">change 26034</a>. To unsubscribe, or for help writing mail filters, visit <a href="https://review.coreboot.org/settings">settings</a>.</p><div itemscope itemtype="http://schema.org/EmailMessage"><div itemscope itemprop="action" itemtype="http://schema.org/ViewAction"><link itemprop="url" href="https://review.coreboot.org/26034"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: coreboot </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-MessageType: newchange </div>
<div style="display:none"> Gerrit-Change-Id: Iff2f34900ce2a96ef6ff0779b651f25ebfc739ad </div>
<div style="display:none"> Gerrit-Change-Number: 26034 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: Subrata Banik <subrata.banik@intel.com> </div>