rules.h, thread.h, lib/cbfs: Add ENV_STAGE_SUPPORTS_COOP
This change consolidates the COOP rules. Co-op in theory works in all x86 stages now, but it hasn't been enabled yet. BUG=b:179699789 TEST=Boot guybrush to OS and verify preloads still work Signed-off-by: Raul E Rangel <rrangel@chromium.org> Change-Id: I1197406d1d36391998b08e3076146bb2fff59d00 Reviewed-on: https://review.coreboot.org/c/coreboot/+/59550 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Julius Werner <jwerner@chromium.org>
This commit is contained in:
parent
af54d7d0dd
commit
d8f07c1f35
|
@ -303,6 +303,13 @@
|
|||
/* When set <arch/smp/spinlock.h> is included for the spinlock implementation. */
|
||||
#define ENV_STAGE_SUPPORTS_SMP (CONFIG(SMP) && STAGE_HAS_SPINLOCKS)
|
||||
|
||||
#if ENV_X86 && CONFIG(COOP_MULTITASKING) && (ENV_RAMSTAGE || ENV_ROMSTAGE)
|
||||
/* TODO: Enable in all x86 stages */
|
||||
#define ENV_STAGE_SUPPORTS_COOP 1
|
||||
#else
|
||||
#define ENV_STAGE_SUPPORTS_COOP 0
|
||||
#endif
|
||||
|
||||
/**
|
||||
* For pre-DRAM stages and post-CAR always build with simple device model, ie.
|
||||
* PCI, PNP and CPU functions operate without use of devicetree. The reason
|
||||
|
|
|
@ -38,7 +38,7 @@ int thread_run_until(struct thread_handle *handle, enum cb_err (*func)(void *),
|
|||
/* Waits until the thread has terminated and returns the error code */
|
||||
enum cb_err thread_join(struct thread_handle *handle);
|
||||
|
||||
#if (ENV_RAMSTAGE || ENV_ROMSTAGE) && CONFIG(COOP_MULTITASKING)
|
||||
#if ENV_STAGE_SUPPORTS_COOP
|
||||
|
||||
struct thread {
|
||||
int id;
|
||||
|
|
|
@ -359,7 +359,7 @@ static enum cb_err get_preload_rdev(struct region_device *rdev, const char *name
|
|||
enum cb_err err;
|
||||
struct cbfs_preload_context *context;
|
||||
|
||||
if (!CONFIG(CBFS_PRELOAD) || (!ENV_RAMSTAGE && !ENV_ROMSTAGE))
|
||||
if (!CONFIG(CBFS_PRELOAD) || !ENV_STAGE_SUPPORTS_COOP)
|
||||
return CB_ERR_ARG;
|
||||
|
||||
context = find_cbfs_preload_context(name);
|
||||
|
|
Loading…
Reference in New Issue