[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <edfc5edc-4bf7-4bc6-b760-c9d4341acc9d@linux.intel.com>
Date: Wed, 26 Jun 2024 10:09:08 +0800
From: Binbin Wu <binbin.wu@...ux.intel.com>
To: "Edgecombe, Rick P" <rick.p.edgecombe@...el.com>,
"kvm@...r.kernel.org" <kvm@...r.kernel.org>,
"linux-kernel@...r.kernel.org" <linux-kernel@...r.kernel.org>,
"Yamahata, Isaku" <isaku.yamahata@...el.com>
Cc: "Zhang, Tina" <tina.zhang@...el.com>,
"seanjc@...gle.com" <seanjc@...gle.com>, "Yuan, Hang" <hang.yuan@...el.com>,
"Huang, Kai" <kai.huang@...el.com>, "Chen, Bo2" <chen.bo@...el.com>,
"sagis@...gle.com" <sagis@...gle.com>,
"isaku.yamahata@...il.com" <isaku.yamahata@...il.com>,
"Aktas, Erdem" <erdemaktas@...gle.com>,
"Chatre, Reinette" <reinette.chatre@...el.com>,
"pbonzini@...hat.com" <pbonzini@...hat.com>,
"sean.j.christopherson@...el.com" <sean.j.christopherson@...el.com>
Subject: Re: [PATCH v19 110/130] KVM: TDX: Handle TDX PV MMIO hypercall
On 6/26/2024 5:09 AM, Edgecombe, Rick P wrote:
> On Tue, 2024-06-25 at 14:54 +0800, Binbin Wu wrote:
>>> + gpa = vcpu->mmio_fragments[0].gpa;
>>> + size = vcpu->mmio_fragments[0].len;
>> Since MMIO cross page boundary is not allowed according to the input
>> checks from TDVMCALL, these mmio_fragments[] is not needed.
>> Just use vcpu->run->mmio.phys_addr and vcpu->run->mmio.len?
> Can we add a comment or something to that check, on why KVM doesn't handle it?
> Is it documented somewhere in the TDX ABI that it is not expected to be
> supported?
TDX GHCI doesn't have such restriction.
According to the reply from Isaku in the below link, I think current
restriction is due to software implementation for simplicity.
https://lore.kernel.org/kvm/20240419173423.GD3596705@ls.amr.corp.intel.com/
+ /* Disallow MMIO crossing page boundary for simplicity. */
+ if (((gpa + size - 1) ^ gpa) & PAGE_MASK)
goto error;
According to
https://lore.kernel.org/all/165550567214.4207.3700499203810719676.tip-bot2@tip-bot2/,
for Linux as TDX guest, it rejects EPT violation #VEs that split pages
based on the reason "MMIO accesses are supposed to be naturally aligned
and therefore never cross page boundaries" to handle the
load_unaligned_zeropad() case.
I am not sure "MMIO accesses are supposed to be naturally aligned" is
true for all other OS as TDX guest, though.
Any suggestion?
Powered by blists - more mailing lists