[Skiboot] [PATCH v2 04/11] core/flash: Unlock around blocklevel calls in NVRAM accessors

Andrew Jeffery andrew at aj.id.au
Tue Sep 25 14:06:28 AEST 2018


This ensures progress when we don't have interrupts available for IPMI.

Signed-off-by: Andrew Jeffery <andrew at aj.id.au>
---
 core/flash.c | 11 +++++++++++
 1 file changed, 11 insertions(+)

diff --git a/core/flash.c b/core/flash.c
index 15eb7443faac..83c1112636e6 100644
--- a/core/flash.c
+++ b/core/flash.c
@@ -118,8 +118,13 @@ static int flash_nvram_start_read(void *dst, uint32_t src, uint32_t len)
 		goto out;
 	}
 
+	nvram_flash->busy = true;
+	unlock(&flash_lock);
+
 	rc = blocklevel_read(nvram_flash->bl, nvram_offset + src, dst, len);
 
+	lock(&flash_lock);
+	nvram_flash->busy = false;
 out:
 	unlock(&flash_lock);
 	if (!rc)
@@ -147,8 +152,14 @@ static int flash_nvram_write(uint32_t dst, void *src, uint32_t len)
 		rc = OPAL_PARAMETER;
 		goto out;
 	}
+
+	nvram_flash->busy = true;
+	unlock(&flash_lock);
+
 	rc = blocklevel_write(nvram_flash->bl, nvram_offset + dst, src, len);
 
+	lock(&flash_lock);
+	nvram_flash->busy = false;
 out:
 	unlock(&flash_lock);
 	return rc;
-- 
2.17.1



More information about the Skiboot mailing list