lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <55E7F90D.9000107@redhat.com>
Date:	Thu, 3 Sep 2015 09:38:53 +0200
From:	Paolo Bonzini <pbonzini@...hat.com>
To:	"Nakajima, Jun" <jun.nakajima@...el.com>,
	Steve Rutherford <srutherford@...gle.com>
Cc:	"Zhang, Yang Z" <yang.z.zhang@...el.com>,
	"linux-kernel@...r.kernel.org" <linux-kernel@...r.kernel.org>,
	"kvm@...r.kernel.org" <kvm@...r.kernel.org>,
	"alex.williamson@...hat.com" <alex.williamson@...hat.com>,
	"srutherford@...el.com" <srutherford@...el.com>,
	"Gudimetla, Giridhar Kumar" <giridhar.kumar.gudimetla@...el.com>
Subject: Re: [PATCH 1/2] KVM: x86: set TMR when the interrupt is accepted



On 03/09/2015 07:18, Nakajima, Jun wrote:
> On Wed, Sep 2, 2015 at 3:38 PM, Steve Rutherford <srutherford@...gle.com> wrote:
>> On Thu, Aug 13, 2015 at 09:31:48AM +0200, Paolo Bonzini wrote:
>> Pinging this thread.
>>
>> Should I put together a patch to make split irqchip work properly with the old TMR behavior?
> 
> Yes, please.
> 
> Intel® 64 and IA-32 Architectures Software Developer’s Manual:
> 
> 24.11.4 Software Access to Related Structures
> 
> In addition to data in the VMCS region itself, VMX non-root operation
> can be controlled by data structures that are
> referenced by pointers in a VMCS (for example, the I/O bitmaps).

The SDM does not list these data structures however.  It also does not
say that, whenever a page is pointed to by the VMCS, *the whole page*
counts as a control data structure.

In http://article.gmane.org/gmane.linux.kernel/2011131 I explained my
reading of the manual and why the vTMR is IMO not part of the control
data structures.  In a nutshell, the vISR, vIRR, vTPR, vPPR etc. are
control data structures, but the other fields look to me like they are
just data.  Jun, can you find anything wrong in the reasoning?

Next week I'll write test cases for it, which are worthwhile anyway.  In
the meanwhile, if Steve wants to prepare a patch that injects level
interrupts (those that have to set the vTMR to 1) while the VCPU is not
running, that would also work great for me as I was going to look into
that anyway.

Paolo

 While
> the pointers to these data structures are
> parts of the VMCS, the data structures themselves are not. They are
> not accessible using VMREAD and VMWRITE
> but by ordinary memory writes.
> Software should ensure that each such data structure is modified only
> when no logical processor with a current
> VMCS that references it is in VMX non-root operation. Doing otherwise
> may lead to unpredictable behavior
> (including behaviors identified in Section 24.11.1)
> 
> 
> 29.6 POSTED-INTERRUPT PROCESSING
> ...
> Use of the posted-interrupt descriptor differs from that of other data
> structures that are referenced by pointers in
> a VMCS. There is a general requirement that software ensure that each
> such data structure is modified only when
> no logical processor with a current VMCS that references it is in VMX
> non-root operation. That requirement does
> not apply to the posted-interrupt descriptor. There is a requirement,
> however, that such modifications be done
> using locked read-modify-write instructions.
> 
> 
>>
>>>
>>>
>>> On 13/08/2015 08:35, Zhang, Yang Z wrote:
>>>>> You may be right. It is safe if no future hardware plans to use
>>>>> it. Let me check with our hardware team to see whether it will be
>>>>> used or not in future.
>>>>
>>>> After checking with Jun, there is no guarantee that the guest running
>>>> on another CPU will operate properly if hypervisor modify the vTMR
>>>> from another CPU. So the hypervisor should not to do it.
>>>
>>> I guess I can cause a vmexit on level-triggered interrupts, it's not a
>>> big deal, but no weasel words, please.
>>>
>>> What's going to break, and where is it documented?
>>>
>>> Paolo
>>> --
>>> To unsubscribe from this list: send the line "unsubscribe kvm" in
>>> the body of a message to majordomo@...r.kernel.org
>>> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> 
> 
> 
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ