On 07/12/2023 18:36, Reshetova, Elena wrote: >>>> The TDVMCALLs are related to the I/O path (networking/block io) into the L2 >> guest, and >>>> so they intentionally go straight to L0 and are never injected to L1. L1 is not >>>> involved in that path at all. >>>> >>>> Using something different than TDVMCALLs here would lead to additional >> traps to L1 and >>>> just add latency/complexity. >>> >>> Looks by default you assume we should use TDX partitioning as "paravisor L1" + >>> "L0 device I/O emulation". >>> >> >> I don't actually want to impose this model on anyone, but this is the one that >> could use some refactoring. I intend to rework these patches to not use a single >> "td_partitioning_active" for decisions. >> >>> I think we are lacking background of this usage model and how it works. For >>> instance, typically L2 is created by L1, and L1 is responsible for L2's device >>> I/O emulation. I don't quite understand how could L0 emulate L2's device I/O? >>> >>> Can you provide more information? >> >> Let's differentiate between fast and slow I/O. The whole point of the paravisor in >> L1 is to provide device emulation for slow I/O: TPM, RTC, NVRAM, IO-APIC, serial >> ports. > > Out of my curiosity and not really related to this discussion, but could you please > elaborate on RTC part here? Do you actually host secure time in L1 to be provided > to the L2? > > Best Regards, > Elena. Hi Elena, I think this RTC is more for compatibility and to give the guest a way to initialize the system clock. This could potentially be a secure time source in the future but it isn't right now. This is what the guest sees right now (might need some more enlightenment): # dmesg | grep -E -i 'clock|rtc|tsc' [ 0.000000] clocksource: hyperv_clocksource_tsc_page: mask: 0xffffffffffffffff max_cycles: 0x24e6a1710, max_idle_ns: 440795202120 ns [ 0.000001] tsc: Marking TSC unstable due to running on Hyper-V [ 0.003621] tsc: Detected 2100.000 MHz processor [ 0.411943] clocksource: refined-jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 7645519600211568 ns [ 0.887459] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 7645041785100000 ns [ 0.895842] PM: RTC time: 16:31:58, date: 2023-12-07 [ 1.043431] PTP clock support registered [ 1.096563] clocksource: Switched to clocksource hyperv_clocksource_tsc_page [ 1.384341] rtc_cmos 00:02: registered as rtc0 [ 1.387469] rtc_cmos 00:02: setting system clock to 2023-12-07T16:31:58 UTC (1701966718) [ 1.392529] rtc_cmos 00:02: alarms up to one day, 114 bytes nvram [ 1.484243] sched_clock: Marking stable (1449873200, 33603000)->(3264982600, -1781506400) Jeremi