diff options
author | Shilpasri G Bhat <shilpa.bhat@linux.vnet.ibm.com> | 2018-03-09 10:47:32 +0530 |
---|---|---|
committer | Stewart Smith <stewart@linux.vnet.ibm.com> | 2018-03-14 02:04:33 -0500 |
commit | b5c9d09d067743be6ab12eef49f80562f0d41f02 (patch) | |
tree | 3cd10b98b7a6866a2fe7a6c66e756eebed5ee779 /hw/dts.c | |
parent | 773836f3424d3e9a7a27996ccb2e698aa581417a (diff) | |
download | skiboot-b5c9d09d067743be6ab12eef49f80562f0d41f02.zip skiboot-b5c9d09d067743be6ab12eef49f80562f0d41f02.tar.gz skiboot-b5c9d09d067743be6ab12eef49f80562f0d41f02.tar.bz2 |
dts: spl_wakeup: Remove all workarounds in the spl wakeup logic
We coded few workarounds in special wakeup logic to handle the
buggy firmware. Now that is fixed remove them as they break the
special wakeup protocol. As per the spec we should not de-assert
beofre assert is complete. So follow this protocol.
Signed-off-by: Shilpasri G Bhat <shilpa.bhat@linux.vnet.ibm.com>
Reviewed-by: Vaidyanathan Srinivasan <svaidy@linux.vnet.ibm.com>
Tested-by: Vaidyanathan Srinivasan <svaidy@linux.vnet.ibm.com>
Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com>
Diffstat (limited to 'hw/dts.c')
-rw-r--r-- | hw/dts.c | 30 |
1 files changed, 1 insertions, 29 deletions
@@ -236,34 +236,6 @@ static int dts_read_core_temp_p9(uint32_t pir, struct dts *dts) return 0; } -static int dts_wakeup_core(struct cpu_thread *cpu) -{ - int retries = 10; - int rc; - - while (retries-- > 0) { - rc = dctl_set_special_wakeup(cpu); - if (rc) { - prerror("Failed to set special wakeup on %d (%d)\n", - cpu->pir, rc); - return rc; - } - - if (!dctl_core_is_gated(cpu)) - break; - - prlog(PR_NOTICE, "Retrying special wakeup on %d\n", cpu->pir); - rc = dctl_clear_special_wakeup(cpu); - if (rc) { - prerror("Failed to clear special wakeup on %d (%d)\n", - cpu->pir, rc); - return rc; - } - } - - return rc; -} - static void dts_async_read_temp(struct timer *t __unused, void *data, u64 now __unused) { @@ -271,7 +243,7 @@ static void dts_async_read_temp(struct timer *t __unused, void *data, int rc, swkup_rc; struct cpu_thread *cpu = data; - swkup_rc = dts_wakeup_core(cpu); + swkup_rc = dctl_set_special_wakeup(cpu); rc = dts_read_core_temp_p9(cpu->pir, &dts); if (!rc) { |