intel / rv-brs-test-suite

The RV BRS test suite checks for compliance against the RVI Boot and Runtime Service specification.
https://github.com/riscv-non-isa/riscv-os-a-see
Apache License 2.0
10 stars 9 forks source link

Known FWTS issues. #9

Open andreiw opened 1 year ago

andreiw commented 1 year ago

List known FWTS issues in this ticket (e.g. ACPI related ones).

xiaobo55x commented 1 year ago

Here are the initial FWTS test results:

Test           |Pass |Fail |Abort|Warn |Skip |Info |                
---------------+-----+-----+-----+-----+-----+-----+                
acpi_ac        |     |     |     |     |   16|     |                           
acpi_als       |     |     |     |     |   17|     |                
acpi_battery   |     |     |     |     |   31|     |                
acpi_ec        |     |     |     |     |   15|     |                
acpi_lid       |     |     |     |     |   15|     |                
acpi_nvdimm    |     |     |     |     |    6|     |         
acpi_pwrb      |     |     |     |     |   13|     |               
acpi_slpb      |     |     |     |     |   12|     |
acpi_time      |     |     |     |     |   21|     |
acpi_wpc       |     |     |     |     |   14|     |                 
acpiinfo       |     |     |     |     |     |    3|                         
acpitables     |    6|     |     |     |     |     |                          
aest           |     |     |     |     |    1|     |                           
asf            |     |     |     |     |    1|     |                        
aspm           |     |     |     |     |     |     |                     
aspt           |     |     |     |     |    1|     |                         
bert           |     |     |     |     |    1|     |       
bgrt           |     |     |     |     |    1|     |
bmc_info       |     |     |     |     |    1|     |
boot           |     |     |     |     |    1|     |                            
cedt           |     |     |     |     |    1|     |
checksum       |    8|     |     |     |     |     |                           
clog           |     |     |     |     |    1|     |
cpep           |     |     |     |     |    1|     |
cpufreq        |     |     |    7|     |     |     |
csrt           |     |     |     |     |    1|     |                
dbg2           |     |     |     |     |    2|     |                           
dbgp           |     |     |     |     |    1|     |                
dppt           |     |     |     |     |    1|     |                
drtm           |     |     |     |     |    1|     |                
ecdt           |     |     |     |     |    1|     |                
einj           |     |     |     |     |    1|     |         
erst           |     |     |     |     |    1|     |               
facs           |    1|     |     |     |     |     |
fadt           |   11|     |     |    1|    2|    1|
fpdt           |     |     |     |     |    1|     |                 
gtdt           |     |     |     |     |    1|     |                         
hest           |     |     |     |     |    1|     |                          
hmat           |     |     |     |     |    1|     |                           
interrupt      |     |     |     |     |     |     |                        
iort           |     |     |     |     |    1|     |                     
klog           |    1|     |     |     |     |     |                         
lpit           |     |     |     |     |    1|     |       
madt           |     |     |    5|     |     |     |
maxfreq        |     |     |     |     |    1|     |
maxreadreq     |    1|     |     |     |     |     |                            
mcfg           |     |     |     |     |    2|     |
mchi           |     |     |     |     |    1|     |                           
method         |   75|     |     |     |  208|     |
mpst           |     |     |     |     |    1|     |
msct           |     |     |     |     |    1|     |
msdm           |     |     |     |     |    1|     |                
mtd_info       |     |     |     |     |    1|     |                           
nfit           |     |     |     |     |    1|     |                
olog           |     |     |     |     |    1|     |                
oops           |    2|     |     |     |     |     |                
pcct           |     |     |     |     |    1|     |                
pdtt           |     |     |     |     |    1|     |         
phat           |     |     |     |     |    1|     |               
pmtt           |     |     |     |     |    1|     |
pptt           |     |     |     |     |    1|     |
prd_info       |     |     |     |     |    1|     |                 
rasf           |     |     |     |     |    1|     |                         
rgrt           |     |     |     |     |    1|     |                          
rsdp           |    8|     |     |     |     |     |                           
rsdt           |    1|     |     |     |     |     |                        
sbst           |     |     |     |     |    1|     |                     
sdei           |     |     |     |     |    1|     |                         
sdev           |     |     |     |     |    1|     |       
slic           |     |     |     |     |    1|     |
slit           |     |     |     |     |    1|     |
smart_battery  |     |     |     |     |   13|     |                            
spcr           |     |     |     |     |    3|     |
spmi           |     |     |     |     |    1|     |                           
srat           |     |     |     |     |    1|     |
stao           |     |     |     |     |    1|     |
svkl           |     |     |     |     |    1|     |
tcpa           |     |     |     |     |    1|     |
tpm2           |     |     |     |     |    1|     |                 
tpmevlog       |     |     |    1|     |     |     |                         
uefi           |     |     |     |     |    1|     |                          
uefibootpath   |     |     |     |     |    1|     |                           
uniqueid       |   17|     |     |     |     |     |                        
version        |     |     |     |     |    1|    4|                     
waet           |     |     |     |     |    1|     |                         
wakealarm      |     |    4|     |     |     |     |       
wdat           |     |     |     |     |    1|     |
wpbt           |     |     |     |     |    1|     |
wsmt           |     |     |     |     |    1|     |                            
xenv           |     |     |     |     |    1|     |
xsdt           |    1|     |     |     |     |     |                           
---------------+-----+-----+-----+-----+-----+-----+
Total:         |  132|    4|   13|    1|  448|    8|
---------------+-----+-----+-----+-----+-----+-----+
xiaobo55x commented 1 year ago

Most of the FWTS cases was skipped on RISC-V for the lack of some system devices and ACPI tables. After checking the riscv-acpi-guidance document(WIP), most of the ACPI tables was not required on RISC-V system. Here just list some known issues that should be fixed for RISC-V:

  1. MADT compliance test(IMSIC/APLIC/PLIC tables) - Done
  2. RHCT table test - Done
  3. PPTT table test
  4. MCFG table test
  5. DBG2 table test
  6. SPCR table test
  7. SRAT table test - NUMA PoC was Done
  8. SLIT table test - NUMA PoC was Done
  9. BERT table test
  10. EINJ table test
  11. ERST table test
  12. HEST table test
  13. IPMI feature test
  14. cpufreq test
  15. maxfreq test
  16. version test
  17. RISC-V BRS batch test(similar to ARM SBBR tests)
  18. Utilities(acpidump/uefidump etc.)
  19. SMBIOS(dmicheck)
  20. UEFI ESRT table
xypron commented 1 year ago

@xiaobo55x Your test output was: esrt=skip. It seems that the table was not checked (probably as it does not exist). What do you think should be fixed?

xiaobo55x commented 1 year ago

@xiaobo55x Your test output was: esrt=skip. It seems that the table was not checked (probably as it does not exist). What do you think should be fixed?

@xypron The root cause was that most of the ACPI tables was not available and it can be fixed by adding the missing tables in Qemu on a virt riscv machine. You can refer to riscv-acpi for the required RISC-V ACPI tables.

xiaobo55x commented 1 year ago

results.log @xypron Here comes the raw FWTS results log for your reference.

xypron commented 1 year ago

I have opened LP #2026305 ("Upgrade to ACPI 6.5")

xiaobo55x commented 1 year ago

Hi @xypron, we are planning to enable RISC-V support for FWTS. Could you share more info about how to submit a patch to FWTS project?

xypron commented 1 year ago

@xiaobo55x https://wiki.ubuntu.com/FirmwareTestSuite has an overview of the development process.

The fwts project uses a mailing list for patches. Please, register at https://lists.ubuntu.com/mailman/listinfo/fwts-devel . You can turn off notifications afterwards.

xiaobo55x commented 1 year ago

Sure, Thanks!

xypron commented 1 year ago

LP #2026305 ("Upgrade to ACPI 6.5")

Patch https://lists.ubuntu.com/archives/fwts-devel/2023-July/013679.html adds ACPI 6.5 to fwts. This should fix the incorrect warning.

xiaobo55x commented 11 months ago

Hi @xypron,

I have added MADT sub-table tests for some RISC-V specific interrupt controller tables(RINTC/IMSIC/APLIC/PLIC) which was accepted on ACPI 6.5.next. Just wonder shall we send the changes to FWTS community now? Or wait for the formal ACPI release(May be 6.5.a) that include RISC-V changes?

The work included some changes to ACPI version

diff --git a/src/acpi/madt/madt.c b/src/acpi/madt/madt.c
index 05f93ed8..b57b4099 100644
--- a/src/acpi/madt/madt.c
+++ b/src/acpi/madt/madt.c
@@ -122,7 +122,7 @@

 #define SUBTABLE_UNDEFINED     0x00
 #define SUBTABLE_VARIABLE      0xff
-#define NUM_SUBTABLE_TYPES     24
+#define NUM_SUBTABLE_TYPES     28
 #define MAX_IO_APIC_ID         256 /* IO APIC ID field is 1 byte */

 #define SBBR_ACPI_MAJOR_VERSION 6
@@ -250,6 +250,18 @@ static struct acpi_madt_subtable_lengths spec_info[] = {
                             SUBTABLE_VARIABLE, SUBTABLE_VARIABLE,
                             SUBTABLE_VARIABLE }
        },
+       { /* for ACPI 6.5a */
+               .major_version = 6,
+               .minor_version = 5,
+               .madt_version = 6,
+               .num_types = 28,
+               .lengths = { 8, 12, 10, 8, 6, 12, 16, SUBTABLE_VARIABLE,
+                            16, 16, 12, 82, 24, 24, 16, 20, 16,
+                            SUBTABLE_VARIABLE, SUBTABLE_VARIABLE,
+                            SUBTABLE_VARIABLE, SUBTABLE_VARIABLE,
+                            SUBTABLE_VARIABLE, SUBTABLE_VARIABLE,
+                            SUBTABLE_VARIABLE, 36, 16, 36, 36 }
+       },
        { /* terminator */
                .major_version = 0,
                .minor_version = 0,

Regards, Haibo