@@ -80,7 +80,7 @@ struct lppaca {
u8 ebb_regs_in_use;
u8 reserved7[6];
u8 dtl_enable_mask; /* Dispatch Trace Log mask */
- u8 donate_dedicated_cpu; /* Donate dedicated CPU cycles */
+ u8 byte_b9; /* Donate dedicated CPU cycles & Expropriation int */
u8 fpregs_in_use;
u8 pmcregs_in_use;
u8 reserved8[28];
@@ -116,6 +116,12 @@ struct lppaca {
#define lppaca_of(cpu) (*paca_ptrs[cpu]->lppaca_ptr)
+/*
+ * Flags for Byte offset 0xB9
+ */
+#define LPPACA_DONATE_DED_CPU_CYCLES 0x1
+#define LPPACA_EXP_INT_ENABLED 0x2
+
/*
* We are using a non architected field to determine if a partition is
* shared or dedicated. This currently works on both KVM and PHYP, but
@@ -221,7 +221,7 @@ static int dedicated_cede_loop(struct cpuidle_device *dev,
u8 old_latency_hint;
pseries_idle_prolog();
- get_lppaca()->donate_dedicated_cpu = 1;
+ get_lppaca()->byte_b9 |= LPPACA_DONATE_DED_CPU_CYCLES;
old_latency_hint = get_lppaca()->cede_latency_hint;
get_lppaca()->cede_latency_hint = cede_latency_hint[index];
@@ -229,7 +229,7 @@ static int dedicated_cede_loop(struct cpuidle_device *dev,
check_and_cede_processor();
local_irq_disable();
- get_lppaca()->donate_dedicated_cpu = 0;
+ get_lppaca()->byte_b9 &= ~LPPACA_DONATE_DED_CPU_CYCLES;
get_lppaca()->cede_latency_hint = old_latency_hint;
pseries_idle_epilog();
VPA byte offset 0xB9 was named as donate_dedicated_cpu as that was the only used bit. The Expropriation/Subvention support defines a bit in byte offset 0xB9. Define this bit and rename the field in VPA to a generic name. Signed-off-by: Bharata B Rao <bharata@linux.ibm.com> --- arch/powerpc/include/asm/lppaca.h | 8 +++++++- drivers/cpuidle/cpuidle-pseries.c | 4 ++-- 2 files changed, 9 insertions(+), 3 deletions(-)