arch/riscv: Add OPENSBI_FW_DYNAMIC_BOOT_HART option
This adds another option to tell OpenSBI which hart to use for booting. Test: Start hifive-unmatched board and see that Hart 1 (instead of 0) is used for running OpenSBI. Signed-off-by: Maximilian Brune <maximilian.brune@9elements.com> Change-Id: Id58bd6ae3b55a5ef3f1a5c97dfa07c79aa4c78d0 Reviewed-on: https://review.coreboot.org/c/coreboot/+/79948 Reviewed-by: Philipp Hug <philipp@hug.cx> Reviewed-by: Felix Held <felix-coreboot@felixheld.de> Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Arthur Heymans <arthur@aheymans.xyz>
This commit is contained in:
		
				
					committed by
					
						 Felix Held
						Felix Held
					
				
			
			
				
	
			
			
			
						parent
						
							f6a7809de8
						
					
				
				
					commit
					a122041be1
				
			| @@ -66,6 +66,16 @@ config OPENSBI_TEXT_START | |||||||
| 	help | 	help | ||||||
| 	  The linking address used to build opensbi. | 	  The linking address used to build opensbi. | ||||||
|  |  | ||||||
|  | config OPENSBI_FW_DYNAMIC_BOOT_HART | ||||||
|  | 	int | ||||||
|  | 	default RISCV_WORKING_HARTID | ||||||
|  | 	help | ||||||
|  | 	  This specifies the hart that OpenSBI will use to boot the payload. If set to | ||||||
|  | 	  value -1, OpenSBI will use a 'lottery' scheme to figure it out itself. | ||||||
|  | 	  This hart must be able to execute in the Supervisor priviledged mode, since | ||||||
|  | 	  that is the mode usually used for the payload. If the hart does not support | ||||||
|  | 	  Supervisor mode OpenSBI will again look for a hart that does support it. | ||||||
|  |  | ||||||
| config ARCH_RISCV_U | config ARCH_RISCV_U | ||||||
| 	# U (user) mode is for programs. | 	# U (user) mode is for programs. | ||||||
| 	bool | 	bool | ||||||
|   | |||||||
| @@ -20,6 +20,8 @@ void run_opensbi(const int hart_id, | |||||||
| 		.version = FW_DYNAMIC_INFO_VERSION_MAX, | 		.version = FW_DYNAMIC_INFO_VERSION_MAX, | ||||||
| 		.next_mode = payload_mode, | 		.next_mode = payload_mode, | ||||||
| 		.next_addr = (uintptr_t)payload, | 		.next_addr = (uintptr_t)payload, | ||||||
|  | 		.options = 0, | ||||||
|  | 		.boot_hart = CONFIG_OPENSBI_FW_DYNAMIC_BOOT_HART, | ||||||
| 	}; | 	}; | ||||||
|  |  | ||||||
| 	csr_write(mepc, opensbi); | 	csr_write(mepc, opensbi); | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user