[riscv] Ignore riscv,isa property in favour of direct CSR testing

The riscv,isa devicetree property appears not to be fully populated on
some real-world systems.  For example, the Sipeed Lichee Pi 4A
(running the vendor U-Boot) reports itself as "rv64imafdcvsu", which
does not include the "zicntr" extension even though the time CSR is
present and functional.

Ignore the riscv,isa property and rely solely on CSR testing to
determine whether or not extensions are present.

Signed-off-by: Michael Brown <mcb30@ipxe.org>
This commit is contained in:
Michael Brown
2025-05-26 21:12:12 +01:00
parent 192cfc3cc5
commit 6eb51f1a6a
2 changed files with 5 additions and 13 deletions

View File

@@ -32,7 +32,7 @@ FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
#include <string.h>
#include <errno.h>
#include <ipxe/fdt.h>
#include <ipxe/hart.h>
#include <ipxe/csr.h>
#include <ipxe/timer.h>
/** Timer increment per microsecond */
@@ -145,10 +145,10 @@ static int zicntr_probe ( void ) {
} u;
int rc;
/* Check if Zicntr extension is supported */
if ( ( rc = hart_supported ( "_zicntr" ) ) != 0 ) {
DBGC ( colour, "ZICNTR not supported: %s\n", strerror ( rc ) );
return rc;
/* Check if time CSR can be read */
if ( ! csr_can_read ( "time" ) ) {
DBGC ( colour, "ZICNTR cannot read TIME CSR\n" );
return -ENOTSUP;
}
/* Get timer frequency */

View File

@@ -30,7 +30,6 @@ FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
*/
#include <errno.h>
#include <ipxe/hart.h>
#include <ipxe/csr.h>
#include <ipxe/entropy.h>
#include <ipxe/drbg.h>
@@ -53,13 +52,6 @@ struct entropy_source zkr_entropy __entropy_source ( ENTROPY_PREFERRED );
* @ret rc Return status code
*/
static int zkr_entropy_enable ( void ) {
int rc;
/* Check if Zkr extension is supported */
if ( ( rc = hart_supported ( "_zkr" ) ) != 0 ) {
DBGC ( colour, "ZKR not supported: %s\n", strerror ( rc ) );
return rc;
}
/* Check if seed CSR is accessible in S-mode */
if ( ! csr_can_write ( "seed", 0 ) ) {