IIUC, L1 KVM can inject a nested exception whose vector isn't #DB, or #NM or #PF with a non-zero event_data to L2.
No, this is not allowed.
How do you interpret the last sentence:
Section 5.2.1 specifies the event data that FRED event delivery of certain events saves on the stack. When FRED event delivery is used for an event injected by VM entry, the event data saved is the value of the injected-event-data field in the VMCS. This value is used instead of what is specified in Section 5.2.1 and is done for __ALL__ injected events using FRED event delivery
To me, it means FRED event injection during VM entry simply pushes the value in the injected-event-data field of the VMCS as event data. But the event data definition should comply with Section 5.2.1. It is a forward compatibility issue otherwise.