On Tue, Jun 03, 2025 at 10:31:57AM +0200, Borislav Petkov wrote: > On Mon, Jun 02, 2025 at 10:02:15AM -0700, Luck, Tony wrote: > > This is just an improvement on my "option 1" (improved because all-ones > > for the component ID is going to be invalid for sure, while all zeroes > > could be a valid component). > > Right, you need to know at injection time which of the components are valid > and which are not. > > > Or just stop collecting on the first invalid one. > > That would mean that you punish the user at the first typo. :-P > > Considering how complex those interfaces become perhaps not such a good > idea... Here's what EINJ V2 injection looks like to a user (to be included in Documentation/firmware-guide/acpi/apei/einj.rst): An EINJv2 error injection example:: # cd /sys/kernel/debug/apei/einj # cat available_error_type # See which errors can be injected 0x00000002 Processor Uncorrectable non-fatal 0x00000008 Memory Correctable 0x00000010 Memory Uncorrectable non-fatal V2_0x00000001 EINJV2 Processor Error V2_0x00000002 EINJV2 Memory Error # echo 0x12345000 > param1 # Set memory address for injection # echo 0xfffffffffffff000 > param2 # Range - anywhere in this page # echo 0x1 > component_id0 # First device ID # echo 0x4 > component_syndrome0 # First error syndrome # echo 0x2 > component_id1 # Second device ID # echo 0x4 > component_syndrome1 # Second error syndrome # echo '' > component_id2 # Mark id2 invalid to terminate list # echo V2_0x2 > error_type # Choose EINJv2 memory error # echo 0xa > flags # set flags to indicate EINJv2 # echo 1 > error_inject # Inject now Note the shorthand to write all-ones using an empty line because typing: # echo fffffffffffffffffffffffffffffff > component_id2 would: 1) give carpal tunnel syndrome 2) wear out the "f" key on my keyboard 3) run the risk of miscounting the number of 'f' characters (above is wrong because there are only 31, but hard to spot that). -Tony