All of lore.kernel.org
 help / color / mirror / Atom feed
From: Sean Christopherson <seanjc@google.com>
To: "Huang, Kai" <kai.huang@intel.com>
Cc: "borntraeger@linux.ibm.com" <borntraeger@linux.ibm.com>,
	"kvm-riscv@lists.infradead.org" <kvm-riscv@lists.infradead.org>,
	"Yao, Yuan" <yuan.yao@intel.com>,
	"tglx@linutronix.de" <tglx@linutronix.de>,
	"kvm@vger.kernel.org" <kvm@vger.kernel.org>,
	"Yamahata, Isaku" <isaku.yamahata@intel.com>,
	"suzuki.poulose@arm.com" <suzuki.poulose@arm.com>,
	"pbonzini@redhat.com" <pbonzini@redhat.com>,
	"david@redhat.com" <david@redhat.com>,
	"linux-mips@vger.kernel.org" <linux-mips@vger.kernel.org>,
	"linuxppc-dev@lists.ozlabs.org" <linuxppc-dev@lists.ozlabs.org>,
	"linux-riscv@lists.infradead.org"
	<linux-riscv@lists.infradead.org>,
	"kvmarm@lists.linux.dev" <kvmarm@lists.linux.dev>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	"mjrosato@linux.ibm.com" <mjrosato@linux.ibm.com>,
	"oliver.upton@linux.dev" <oliver.upton@linux.dev>,
	"farosas@linux.ibm.com" <farosas@linux.ibm.com>,
	"linux-s390@vger.kernel.org" <linux-s390@vger.kernel.org>,
	"palmer@dabbelt.com" <palmer@dabbelt.com>,
	"chenhuacai@kernel.org" <chenhuacai@kernel.org>,
	"aou@eecs.berkeley.edu" <aou@eecs.berkeley.edu>,
	"alexandru.elisei@arm.com" <alexandru.elisei@arm.com>,
	"mpe@ellerman.id.au" <mpe@ellerman.id.au>,
	"vkuznets@redhat.com" <vkuznets@redhat.com>,
	"maz@kernel.org" <maz@kernel.org>,
	"anup@brainfault.org" <anup@brainfault.org>,
	"frankja@linux.ibm.com" <frankja@linux.ibm.com>,
	"james.morse@arm.com" <james.morse@arm.com>,
	"farman@linux.ibm.com" <farman@linux.ibm.com>,
	"aleksandar.qemu.devel@gmail.com"
	<aleksandar.qemu.devel@gmail.com>,
	"kvmarm@lists.cs.columbia.edu" <kvmarm@lists.cs.columbia.edu>,
	"paul.walmsley@sifive.com" <paul.walmsley@sifive.com>,
	"linux-arm-kernel@lists.infradead.org" 
	<linux-arm-kernel@lists.infradead.org>,
	"atishp@atishpatra.org" <atishp@atishpatra.org>,
	"imbrenda@linux.ibm.com" <imbrenda@linux.ibm.com>,
	"Gao, Chao" <chao.gao@intel.com>
Subject: Re: [PATCH 38/44] KVM: Disable CPU hotplug during hardware enabling
Date: Wed, 16 Nov 2022 17:11:18 +0000	[thread overview]
Message-ID: <Y3UZtoIidMyE8qVz@google.com> (raw)
In-Reply-To: <95ca433349eca601bdd2b16d70f59ba8e56d8e3f.camel@intel.com>

On Wed, Nov 16, 2022, Huang, Kai wrote:
> On Tue, 2022-11-15 at 20:16 +0000, Sean Christopherson wrote:
> > On Thu, Nov 10, 2022, Huang, Kai wrote:
> > > On Thu, 2022-11-10 at 01:33 +0000, Huang, Kai wrote:
> > > Hmm.. I wasn't thinking thoroughly.  I forgot CPU compatibility check also
> > > happens on all online cpus when loading KVM.  For this case, IRQ is disabled and
> > > cpu_active() is true.  For the hotplug case, IRQ is enabled but  cpu_active() is
> > > false.
> > 
> > Actually, you're right (and wrong).  You're right in that the WARN is flawed.  And
> > the reason for that is because you're wrong about the hotplug case.  In this version
> > of things, the compatibility checks are routed through hardware enabling, i.e. this
> > flow is used only when loading KVM.  This helper should only be called via SMP function
> > call, which means that IRQs should always be disabled.
> 
> Did you mean below code change in later patch "[PATCH 39/44] KVM: Drop
> kvm_count_lock and instead protect kvm_usage_count with kvm_lock"?
> 
>  	/*
>  	 * Abort the CPU online process if hardware virtualization cannot
>  	 * be enabled. Otherwise running VMs would encounter unrecoverable
> @@ -5039,13 +5039,16 @@ static int kvm_online_cpu(unsigned int cpu)
>  	if (kvm_usage_count) {
>  		WARN_ON_ONCE(atomic_read(&hardware_enable_failed));
>  
> +		local_irq_save(flags);
>  		hardware_enable_nolock(NULL);
> +		local_irq_restore(flags);

Sort of.  What I was saying is that in this v1, the compatibility checks that are
done during harware enabling are initiated from vendor code, i.e. VMX and SVM call
{svm,vmx}_check_processor_compat() directly.  As a result, the compat checks that
are handled in common code:

	if (__cr4_reserved_bits(cpu_has, c) !=
	    __cr4_reserved_bits(cpu_has, &boot_cpu_data))
		return -EIO;

are skipped.  And if that's fixed, then the above hardware_enable_nolock() call
will bounce through kvm_x86_check_processor_compatibility() with IRQs enabled
once the KVM hotplug hook is moved to the ONLINE section.

As above, the simple "fix" would be to disable IRQs, but that's not actually
necessary.  The only requirement is that preemption is disabled so that the checks
are done on the current CPU.  The "IRQs disabled" check was a deliberately
agressive WARN that was added to guard against doing compatibility checks from
the "wrong" location.

E.g. this is what I ended up with for a changelog to drop the irqs_disabled()
check and for the end code (though it's not tested yet...)

    Drop kvm_x86_check_processor_compatibility()'s WARN that IRQs are
    disabled, as the ONLINE section runs with IRQs disabled.  The WARN wasn't
    intended to be a requirement, e.g. disabling preemption is sufficient,
    the IRQ thing was purely an aggressive sanity check since the helper was
    only ever invoked via SMP function call.


static int kvm_x86_check_processor_compatibility(void)
{
        int cpu = smp_processor_id();
        struct cpuinfo_x86 *c = &cpu_data(cpu);

        /*
         * Compatibility checks are done when loading KVM and when enabling
         * hardware, e.g. during CPU hotplug, to ensure all online CPUs are
         * compatible, i.e. KVM should never perform a compatibility check on
         * an offline CPU.
         */
        WARN_ON(!cpu_online(cpu));

        if (__cr4_reserved_bits(cpu_has, c) !=
            __cr4_reserved_bits(cpu_has, &boot_cpu_data))
                return -EIO;

        return static_call(kvm_x86_check_processor_compatibility)();
}


int kvm_arch_hardware_enable(void)
{
        struct kvm *kvm;
        struct kvm_vcpu *vcpu;
        unsigned long i;
        int ret;
        u64 local_tsc;
        u64 max_tsc = 0;
        bool stable, backwards_tsc = false;

        kvm_user_return_msr_cpu_online();

        ret = kvm_x86_check_processor_compatibility();
        if (ret)
                return ret;

        ret = static_call(kvm_x86_hardware_enable)();
        if (ret != 0)
                return ret;


	....
}

WARNING: multiple messages have this Message-ID (diff)
From: Sean Christopherson <seanjc@google.com>
To: "Huang, Kai" <kai.huang@intel.com>
Cc: "borntraeger@linux.ibm.com" <borntraeger@linux.ibm.com>,
	"kvm-riscv@lists.infradead.org" <kvm-riscv@lists.infradead.org>,
	"Yao, Yuan" <yuan.yao@intel.com>,
	"tglx@linutronix.de" <tglx@linutronix.de>,
	"kvm@vger.kernel.org" <kvm@vger.kernel.org>,
	"Yamahata, Isaku" <isaku.yamahata@intel.com>,
	"suzuki.poulose@arm.com" <suzuki.poulose@arm.com>,
	"pbonzini@redhat.com" <pbonzini@redhat.com>,
	"david@redhat.com" <david@redhat.com>,
	"linux-mips@vger.kernel.org" <linux-mips@vger.kernel.org>,
	"linuxppc-dev@lists.ozlabs.org" <linuxppc-dev@lists.ozlabs.org>,
	"linux-riscv@lists.infradead.org"
	<linux-riscv@lists.infradead.org>,
	"kvmarm@lists.linux.dev" <kvmarm@lists.linux.dev>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	"mjrosato@linux.ibm.com" <mjrosato@linux.ibm.com>,
	"oliver.upton@linux.dev" <oliver.upton@linux.dev>,
	"farosas@linux.ibm.com" <farosas@linux.ibm.com>,
	"linux-s390@vger.kernel.org" <linux-s390@vger.kernel.org>,
	"palmer@dabbelt.com" <palmer@dabbelt.com>,
	"chenhuacai@kernel.org" <chenhuacai@kernel.org>,
	"aou@eecs.berkeley.edu" <aou@eecs.berkeley.edu>,
	"alexandru.elisei@arm.com" <alexandru.elisei@arm.com>,
	"mpe@ellerman.id.au" <mpe@ellerman.id.au>,
	"vkuznets@redhat.com" <vkuznets@redhat.com>,
	"maz@kernel.org" <maz@kernel.org>,
	"anup@brainfault.org" <anup@brainfault.org>,
	"frankja@linux.ibm.com" <frankja@linux.ibm.com>,
	"james.morse@arm.com" <james.morse@arm.com>,
	"farman@linux.ibm.com" <farman@linux.ibm.com>,
	"aleksandar.qemu.devel@gmail.com"
	<aleksandar.qemu.devel@gmail.com>,
	"kvmarm@lists.cs.columbia.edu" <kvmarm@lists.cs.columbia.edu>,
	"paul.walmsley@sifive.com" <paul.walmsley@sifive.com>,
	"linux-arm-kernel@lists.infradead.org"
	<linux-arm-kernel@lists.infradead.org>,
	"atishp@atishpatra.org" <atishp@atishpatra.org>,
	"imbrenda@linux.ibm.com" <imbrenda@linux.ibm.com>,
	"Gao, Chao" <chao.gao@intel.com>
Subject: Re: [PATCH 38/44] KVM: Disable CPU hotplug during hardware enabling
Date: Wed, 16 Nov 2022 17:11:18 +0000	[thread overview]
Message-ID: <Y3UZtoIidMyE8qVz@google.com> (raw)
In-Reply-To: <95ca433349eca601bdd2b16d70f59ba8e56d8e3f.camel@intel.com>

On Wed, Nov 16, 2022, Huang, Kai wrote:
> On Tue, 2022-11-15 at 20:16 +0000, Sean Christopherson wrote:
> > On Thu, Nov 10, 2022, Huang, Kai wrote:
> > > On Thu, 2022-11-10 at 01:33 +0000, Huang, Kai wrote:
> > > Hmm.. I wasn't thinking thoroughly.  I forgot CPU compatibility check also
> > > happens on all online cpus when loading KVM.  For this case, IRQ is disabled and
> > > cpu_active() is true.  For the hotplug case, IRQ is enabled but  cpu_active() is
> > > false.
> > 
> > Actually, you're right (and wrong).  You're right in that the WARN is flawed.  And
> > the reason for that is because you're wrong about the hotplug case.  In this version
> > of things, the compatibility checks are routed through hardware enabling, i.e. this
> > flow is used only when loading KVM.  This helper should only be called via SMP function
> > call, which means that IRQs should always be disabled.
> 
> Did you mean below code change in later patch "[PATCH 39/44] KVM: Drop
> kvm_count_lock and instead protect kvm_usage_count with kvm_lock"?
> 
>  	/*
>  	 * Abort the CPU online process if hardware virtualization cannot
>  	 * be enabled. Otherwise running VMs would encounter unrecoverable
> @@ -5039,13 +5039,16 @@ static int kvm_online_cpu(unsigned int cpu)
>  	if (kvm_usage_count) {
>  		WARN_ON_ONCE(atomic_read(&hardware_enable_failed));
>  
> +		local_irq_save(flags);
>  		hardware_enable_nolock(NULL);
> +		local_irq_restore(flags);

Sort of.  What I was saying is that in this v1, the compatibility checks that are
done during harware enabling are initiated from vendor code, i.e. VMX and SVM call
{svm,vmx}_check_processor_compat() directly.  As a result, the compat checks that
are handled in common code:

	if (__cr4_reserved_bits(cpu_has, c) !=
	    __cr4_reserved_bits(cpu_has, &boot_cpu_data))
		return -EIO;

are skipped.  And if that's fixed, then the above hardware_enable_nolock() call
will bounce through kvm_x86_check_processor_compatibility() with IRQs enabled
once the KVM hotplug hook is moved to the ONLINE section.

As above, the simple "fix" would be to disable IRQs, but that's not actually
necessary.  The only requirement is that preemption is disabled so that the checks
are done on the current CPU.  The "IRQs disabled" check was a deliberately
agressive WARN that was added to guard against doing compatibility checks from
the "wrong" location.

E.g. this is what I ended up with for a changelog to drop the irqs_disabled()
check and for the end code (though it's not tested yet...)

    Drop kvm_x86_check_processor_compatibility()'s WARN that IRQs are
    disabled, as the ONLINE section runs with IRQs disabled.  The WARN wasn't
    intended to be a requirement, e.g. disabling preemption is sufficient,
    the IRQ thing was purely an aggressive sanity check since the helper was
    only ever invoked via SMP function call.


static int kvm_x86_check_processor_compatibility(void)
{
        int cpu = smp_processor_id();
        struct cpuinfo_x86 *c = &cpu_data(cpu);

        /*
         * Compatibility checks are done when loading KVM and when enabling
         * hardware, e.g. during CPU hotplug, to ensure all online CPUs are
         * compatible, i.e. KVM should never perform a compatibility check on
         * an offline CPU.
         */
        WARN_ON(!cpu_online(cpu));

        if (__cr4_reserved_bits(cpu_has, c) !=
            __cr4_reserved_bits(cpu_has, &boot_cpu_data))
                return -EIO;

        return static_call(kvm_x86_check_processor_compatibility)();
}


int kvm_arch_hardware_enable(void)
{
        struct kvm *kvm;
        struct kvm_vcpu *vcpu;
        unsigned long i;
        int ret;
        u64 local_tsc;
        u64 max_tsc = 0;
        bool stable, backwards_tsc = false;

        kvm_user_return_msr_cpu_online();

        ret = kvm_x86_check_processor_compatibility();
        if (ret)
                return ret;

        ret = static_call(kvm_x86_hardware_enable)();
        if (ret != 0)
                return ret;


	....
}

_______________________________________________
linux-riscv mailing list
linux-riscv@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-riscv

WARNING: multiple messages have this Message-ID (diff)
From: Sean Christopherson <seanjc@google.com>
To: "Huang, Kai" <kai.huang@intel.com>
Cc: "mjrosato@linux.ibm.com" <mjrosato@linux.ibm.com>,
	"david@redhat.com" <david@redhat.com>,
	"paul.walmsley@sifive.com" <paul.walmsley@sifive.com>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	"linux-riscv@lists.infradead.org"
	<linux-riscv@lists.infradead.org>,
	"imbrenda@linux.ibm.com" <imbrenda@linux.ibm.com>,
	"kvmarm@lists.cs.columbia.edu" <kvmarm@lists.cs.columbia.edu>,
	"linux-s390@vger.kernel.org" <linux-s390@vger.kernel.org>,
	"kvm@vger.kernel.org" <kvm@vger.kernel.org>,
	"chenhuacai@kernel.org" <chenhuacai@kernel.org>,
	"aleksandar.qemu.devel@gmail.com"
	<aleksandar.qemu.devel@gmail.com>,
	"james.morse@arm.com" <james.morse@arm.com>,
	"borntraeger@linux.ibm.com" <borntraeger@linux.ibm.com>,
	"Gao, Chao" <chao.gao@intel.com>,
	"farman@linux.ibm.com" <farman@linux.ibm.com>,
	"aou@eecs.berkeley.edu" <aou@eecs.berkeley.edu>,
	"suzuki.poulose@arm.com" <suzuki.poulose@arm.com>,
	"Yao, Yuan" <yuan.yao@intel.com>,
	"kvmarm@lists.linux.dev" <kvmarm@lists.linux.dev>,
	"tglx@linutro nix.de" <tglx@linutronix.de>,
	"alexandru.elisei@arm.com" <alexandru.elisei@arm.com>,
	"linux-arm-kernel@lists.infradead.org"
	<linux-arm-kernel@lists.infradead.org>,
	"frankja@linux.ibm.com" <frankja@linux.ibm.com>,
	"Yamahata, Isaku" <isaku.yamahata@intel.com>,
	"atishp@atishpatra.org" <atishp@atishpatra.org>,
	"farosas@linux.ibm.com" <farosas@linux.ibm.com>,
	"anup@brainfault.org" <anup@brainfault.org>,
	"linux-mips@vger.kernel.org" <linux-mips@vger.kernel.org>,
	"oliver.upton@linux.dev" <oliver.upton@linux.dev>,
	"palmer@dabbelt.com" <palmer@dabbelt.com>,
	"kvm-riscv@lists.infradead.org" <kvm-riscv@lists.infradead.org>,
	"maz@kernel.org" <maz@kernel.org>,
	"pbonzini@redhat.com" <pbonzini@redhat.com>,
	"vkuznets@redhat.com" <vkuznets@redhat.com>,
	"linuxppc-dev@lists.ozlabs.org" <linuxppc-dev@lists.ozlabs.org>
Subject: Re: [PATCH 38/44] KVM: Disable CPU hotplug during hardware enabling
Date: Wed, 16 Nov 2022 17:11:18 +0000	[thread overview]
Message-ID: <Y3UZtoIidMyE8qVz@google.com> (raw)
In-Reply-To: <95ca433349eca601bdd2b16d70f59ba8e56d8e3f.camel@intel.com>

On Wed, Nov 16, 2022, Huang, Kai wrote:
> On Tue, 2022-11-15 at 20:16 +0000, Sean Christopherson wrote:
> > On Thu, Nov 10, 2022, Huang, Kai wrote:
> > > On Thu, 2022-11-10 at 01:33 +0000, Huang, Kai wrote:
> > > Hmm.. I wasn't thinking thoroughly.  I forgot CPU compatibility check also
> > > happens on all online cpus when loading KVM.  For this case, IRQ is disabled and
> > > cpu_active() is true.  For the hotplug case, IRQ is enabled but  cpu_active() is
> > > false.
> > 
> > Actually, you're right (and wrong).  You're right in that the WARN is flawed.  And
> > the reason for that is because you're wrong about the hotplug case.  In this version
> > of things, the compatibility checks are routed through hardware enabling, i.e. this
> > flow is used only when loading KVM.  This helper should only be called via SMP function
> > call, which means that IRQs should always be disabled.
> 
> Did you mean below code change in later patch "[PATCH 39/44] KVM: Drop
> kvm_count_lock and instead protect kvm_usage_count with kvm_lock"?
> 
>  	/*
>  	 * Abort the CPU online process if hardware virtualization cannot
>  	 * be enabled. Otherwise running VMs would encounter unrecoverable
> @@ -5039,13 +5039,16 @@ static int kvm_online_cpu(unsigned int cpu)
>  	if (kvm_usage_count) {
>  		WARN_ON_ONCE(atomic_read(&hardware_enable_failed));
>  
> +		local_irq_save(flags);
>  		hardware_enable_nolock(NULL);
> +		local_irq_restore(flags);

Sort of.  What I was saying is that in this v1, the compatibility checks that are
done during harware enabling are initiated from vendor code, i.e. VMX and SVM call
{svm,vmx}_check_processor_compat() directly.  As a result, the compat checks that
are handled in common code:

	if (__cr4_reserved_bits(cpu_has, c) !=
	    __cr4_reserved_bits(cpu_has, &boot_cpu_data))
		return -EIO;

are skipped.  And if that's fixed, then the above hardware_enable_nolock() call
will bounce through kvm_x86_check_processor_compatibility() with IRQs enabled
once the KVM hotplug hook is moved to the ONLINE section.

As above, the simple "fix" would be to disable IRQs, but that's not actually
necessary.  The only requirement is that preemption is disabled so that the checks
are done on the current CPU.  The "IRQs disabled" check was a deliberately
agressive WARN that was added to guard against doing compatibility checks from
the "wrong" location.

E.g. this is what I ended up with for a changelog to drop the irqs_disabled()
check and for the end code (though it's not tested yet...)

    Drop kvm_x86_check_processor_compatibility()'s WARN that IRQs are
    disabled, as the ONLINE section runs with IRQs disabled.  The WARN wasn't
    intended to be a requirement, e.g. disabling preemption is sufficient,
    the IRQ thing was purely an aggressive sanity check since the helper was
    only ever invoked via SMP function call.


static int kvm_x86_check_processor_compatibility(void)
{
        int cpu = smp_processor_id();
        struct cpuinfo_x86 *c = &cpu_data(cpu);

        /*
         * Compatibility checks are done when loading KVM and when enabling
         * hardware, e.g. during CPU hotplug, to ensure all online CPUs are
         * compatible, i.e. KVM should never perform a compatibility check on
         * an offline CPU.
         */
        WARN_ON(!cpu_online(cpu));

        if (__cr4_reserved_bits(cpu_has, c) !=
            __cr4_reserved_bits(cpu_has, &boot_cpu_data))
                return -EIO;

        return static_call(kvm_x86_check_processor_compatibility)();
}


int kvm_arch_hardware_enable(void)
{
        struct kvm *kvm;
        struct kvm_vcpu *vcpu;
        unsigned long i;
        int ret;
        u64 local_tsc;
        u64 max_tsc = 0;
        bool stable, backwards_tsc = false;

        kvm_user_return_msr_cpu_online();

        ret = kvm_x86_check_processor_compatibility();
        if (ret)
                return ret;

        ret = static_call(kvm_x86_hardware_enable)();
        if (ret != 0)
                return ret;


	....
}

WARNING: multiple messages have this Message-ID (diff)
From: Sean Christopherson <seanjc@google.com>
To: "Huang, Kai" <kai.huang@intel.com>
Cc: "mjrosato@linux.ibm.com" <mjrosato@linux.ibm.com>,
	"david@redhat.com" <david@redhat.com>,
	"paul.walmsley@sifive.com" <paul.walmsley@sifive.com>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	"linux-riscv@lists.infradead.org"
	<linux-riscv@lists.infradead.org>,
	"imbrenda@linux.ibm.com" <imbrenda@linux.ibm.com>,
	"kvmarm@lists.cs.columbia.edu" <kvmarm@lists.cs.columbia.edu>,
	"linux-s390@vger.kernel.org" <linux-s390@vger.kernel.org>,
	"kvm@vger.kernel.org" <kvm@vger.kernel.org>,
	"mpe@ellerman.id.au" <mpe@ellerman.id.au>,
	"chenhuacai@kernel.org" <chenhuacai@kernel.org>,
	"aleksandar.qemu.devel@gmail.com"
	<aleksandar.qemu.devel@gmail.com>,
	"borntraeger@linux.ibm.com" <borntraeger@linux.ibm.com>,
	"Gao, Chao" <chao.gao@intel.com>,
	"farman@linux.ibm.com" <farman@linux.ibm.com>,
	"aou@eecs.berkeley.edu" <aou@eecs.berkeley.edu>,
	"Yao, Yuan" <yuan.yao@intel.com>,
	"kvmarm@lists.linux.dev" <kvmarm@lists.linux.dev>,
	"tglx@linutronix.de" <tglx@linutronix.de>,
	"linux-arm-kernel@lists.infradead.org"
	<linux-arm-kernel@lists.infradead.org>,
	"frankja@linux.ibm.com" <frankja@linux.ibm.com>,
	"Yamahata, Isaku" <isaku.yamahata@intel.com>,
	"atishp@atishpatra.org" <atishp@atishpatra.org>,
	"farosas@linux.ibm.com" <farosas@linux.ibm.com>,
	"linux-mips@vger.kernel.org" <linux-mips@vger.kernel.org>,
	"palmer@dabbelt.com" <palmer@dabbelt.com>,
	"kvm-riscv@lists.infradead.org" <kvm-riscv@lists.infradead.org>,
	"maz@kernel.org" <maz@kernel.org>,
	"pbonzini@redhat.com" <pbonzini@redhat.com>,
	"vkuznets@redhat.com" <vkuznets@redhat.com>,
	"linuxppc-dev@lists.ozlabs.org" <linuxppc-dev@lists.ozlabs.org>
Subject: Re: [PATCH 38/44] KVM: Disable CPU hotplug during hardware enabling
Date: Wed, 16 Nov 2022 17:11:18 +0000	[thread overview]
Message-ID: <Y3UZtoIidMyE8qVz@google.com> (raw)
In-Reply-To: <95ca433349eca601bdd2b16d70f59ba8e56d8e3f.camel@intel.com>

On Wed, Nov 16, 2022, Huang, Kai wrote:
> On Tue, 2022-11-15 at 20:16 +0000, Sean Christopherson wrote:
> > On Thu, Nov 10, 2022, Huang, Kai wrote:
> > > On Thu, 2022-11-10 at 01:33 +0000, Huang, Kai wrote:
> > > Hmm.. I wasn't thinking thoroughly.  I forgot CPU compatibility check also
> > > happens on all online cpus when loading KVM.  For this case, IRQ is disabled and
> > > cpu_active() is true.  For the hotplug case, IRQ is enabled but  cpu_active() is
> > > false.
> > 
> > Actually, you're right (and wrong).  You're right in that the WARN is flawed.  And
> > the reason for that is because you're wrong about the hotplug case.  In this version
> > of things, the compatibility checks are routed through hardware enabling, i.e. this
> > flow is used only when loading KVM.  This helper should only be called via SMP function
> > call, which means that IRQs should always be disabled.
> 
> Did you mean below code change in later patch "[PATCH 39/44] KVM: Drop
> kvm_count_lock and instead protect kvm_usage_count with kvm_lock"?
> 
>  	/*
>  	 * Abort the CPU online process if hardware virtualization cannot
>  	 * be enabled. Otherwise running VMs would encounter unrecoverable
> @@ -5039,13 +5039,16 @@ static int kvm_online_cpu(unsigned int cpu)
>  	if (kvm_usage_count) {
>  		WARN_ON_ONCE(atomic_read(&hardware_enable_failed));
>  
> +		local_irq_save(flags);
>  		hardware_enable_nolock(NULL);
> +		local_irq_restore(flags);

Sort of.  What I was saying is that in this v1, the compatibility checks that are
done during harware enabling are initiated from vendor code, i.e. VMX and SVM call
{svm,vmx}_check_processor_compat() directly.  As a result, the compat checks that
are handled in common code:

	if (__cr4_reserved_bits(cpu_has, c) !=
	    __cr4_reserved_bits(cpu_has, &boot_cpu_data))
		return -EIO;

are skipped.  And if that's fixed, then the above hardware_enable_nolock() call
will bounce through kvm_x86_check_processor_compatibility() with IRQs enabled
once the KVM hotplug hook is moved to the ONLINE section.

As above, the simple "fix" would be to disable IRQs, but that's not actually
necessary.  The only requirement is that preemption is disabled so that the checks
are done on the current CPU.  The "IRQs disabled" check was a deliberately
agressive WARN that was added to guard against doing compatibility checks from
the "wrong" location.

E.g. this is what I ended up with for a changelog to drop the irqs_disabled()
check and for the end code (though it's not tested yet...)

    Drop kvm_x86_check_processor_compatibility()'s WARN that IRQs are
    disabled, as the ONLINE section runs with IRQs disabled.  The WARN wasn't
    intended to be a requirement, e.g. disabling preemption is sufficient,
    the IRQ thing was purely an aggressive sanity check since the helper was
    only ever invoked via SMP function call.


static int kvm_x86_check_processor_compatibility(void)
{
        int cpu = smp_processor_id();
        struct cpuinfo_x86 *c = &cpu_data(cpu);

        /*
         * Compatibility checks are done when loading KVM and when enabling
         * hardware, e.g. during CPU hotplug, to ensure all online CPUs are
         * compatible, i.e. KVM should never perform a compatibility check on
         * an offline CPU.
         */
        WARN_ON(!cpu_online(cpu));

        if (__cr4_reserved_bits(cpu_has, c) !=
            __cr4_reserved_bits(cpu_has, &boot_cpu_data))
                return -EIO;

        return static_call(kvm_x86_check_processor_compatibility)();
}


int kvm_arch_hardware_enable(void)
{
        struct kvm *kvm;
        struct kvm_vcpu *vcpu;
        unsigned long i;
        int ret;
        u64 local_tsc;
        u64 max_tsc = 0;
        bool stable, backwards_tsc = false;

        kvm_user_return_msr_cpu_online();

        ret = kvm_x86_check_processor_compatibility();
        if (ret)
                return ret;

        ret = static_call(kvm_x86_hardware_enable)();
        if (ret != 0)
                return ret;


	....
}
_______________________________________________
kvmarm mailing list
kvmarm@lists.cs.columbia.edu
https://lists.cs.columbia.edu/mailman/listinfo/kvmarm

WARNING: multiple messages have this Message-ID (diff)
From: Sean Christopherson <seanjc@google.com>
To: "Huang, Kai" <kai.huang@intel.com>
Cc: "borntraeger@linux.ibm.com" <borntraeger@linux.ibm.com>,
	"kvm-riscv@lists.infradead.org" <kvm-riscv@lists.infradead.org>,
	"Yao, Yuan" <yuan.yao@intel.com>,
	"tglx@linutronix.de" <tglx@linutronix.de>,
	"kvm@vger.kernel.org" <kvm@vger.kernel.org>,
	"Yamahata, Isaku" <isaku.yamahata@intel.com>,
	"suzuki.poulose@arm.com" <suzuki.poulose@arm.com>,
	"pbonzini@redhat.com" <pbonzini@redhat.com>,
	"david@redhat.com" <david@redhat.com>,
	"linux-mips@vger.kernel.org" <linux-mips@vger.kernel.org>,
	"linuxppc-dev@lists.ozlabs.org" <linuxppc-dev@lists.ozlabs.org>,
	"linux-riscv@lists.infradead.org"
	<linux-riscv@lists.infradead.org>,
	"kvmarm@lists.linux.dev" <kvmarm@lists.linux.dev>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	"mjrosato@linux.ibm.com" <mjrosato@linux.ibm.com>,
	"oliver.upton@linux.dev" <oliver.upton@linux.dev>,
	"farosas@linux.ibm.com" <farosas@linux.ibm.com>,
	"linux-s390@vger.kernel.org" <linux-s390@vger.kernel.org>,
	"palmer@dabbelt.com" <palmer@dabbelt.com>,
	"chenhuacai@kernel.org" <chenhuacai@kernel.org>,
	"aou@eecs.berkeley.edu" <aou@eecs.berkeley.edu>,
	"alexandru.elisei@arm.com" <alexandru.elisei@arm.com>,
	"mpe@ellerman.id.au" <mpe@ellerman.id.au>,
	"vkuznets@redhat.com" <vkuznets@redhat.com>,
	"maz@kernel.org" <maz@kernel.org>,
	"anup@brainfault.org" <anup@brainfault.org>,
	"frankja@linux.ibm.com" <frankja@linux.ibm.com>,
	"james.morse@arm.com" <james.morse@arm.com>,
	"farman@linux.ibm.com" <farman@linux.ibm.com>,
	"aleksandar.qemu.devel@gmail.com"
	<aleksandar.qemu.devel@gmail.com>,
	"kvmarm@lists.cs.columbia.edu" <kvmarm@lists.cs.columbia.edu>,
	"paul.walmsley@sifive.com" <paul.walmsley@sifive.com>,
	"linux-arm-kernel@lists.infradead.org"
	<linux-arm-kernel@lists.infradead.org>,
	"atishp@atishpatra.org" <atishp@atishpatra.org>,
	"imbrenda@linux.ibm.com" <imbrenda@linux.ibm.com>,
	"Gao, Chao" <chao.gao@intel.com>
Subject: Re: [PATCH 38/44] KVM: Disable CPU hotplug during hardware enabling
Date: Wed, 16 Nov 2022 17:11:18 +0000	[thread overview]
Message-ID: <Y3UZtoIidMyE8qVz@google.com> (raw)
In-Reply-To: <95ca433349eca601bdd2b16d70f59ba8e56d8e3f.camel@intel.com>

On Wed, Nov 16, 2022, Huang, Kai wrote:
> On Tue, 2022-11-15 at 20:16 +0000, Sean Christopherson wrote:
> > On Thu, Nov 10, 2022, Huang, Kai wrote:
> > > On Thu, 2022-11-10 at 01:33 +0000, Huang, Kai wrote:
> > > Hmm.. I wasn't thinking thoroughly.  I forgot CPU compatibility check also
> > > happens on all online cpus when loading KVM.  For this case, IRQ is disabled and
> > > cpu_active() is true.  For the hotplug case, IRQ is enabled but  cpu_active() is
> > > false.
> > 
> > Actually, you're right (and wrong).  You're right in that the WARN is flawed.  And
> > the reason for that is because you're wrong about the hotplug case.  In this version
> > of things, the compatibility checks are routed through hardware enabling, i.e. this
> > flow is used only when loading KVM.  This helper should only be called via SMP function
> > call, which means that IRQs should always be disabled.
> 
> Did you mean below code change in later patch "[PATCH 39/44] KVM: Drop
> kvm_count_lock and instead protect kvm_usage_count with kvm_lock"?
> 
>  	/*
>  	 * Abort the CPU online process if hardware virtualization cannot
>  	 * be enabled. Otherwise running VMs would encounter unrecoverable
> @@ -5039,13 +5039,16 @@ static int kvm_online_cpu(unsigned int cpu)
>  	if (kvm_usage_count) {
>  		WARN_ON_ONCE(atomic_read(&hardware_enable_failed));
>  
> +		local_irq_save(flags);
>  		hardware_enable_nolock(NULL);
> +		local_irq_restore(flags);

Sort of.  What I was saying is that in this v1, the compatibility checks that are
done during harware enabling are initiated from vendor code, i.e. VMX and SVM call
{svm,vmx}_check_processor_compat() directly.  As a result, the compat checks that
are handled in common code:

	if (__cr4_reserved_bits(cpu_has, c) !=
	    __cr4_reserved_bits(cpu_has, &boot_cpu_data))
		return -EIO;

are skipped.  And if that's fixed, then the above hardware_enable_nolock() call
will bounce through kvm_x86_check_processor_compatibility() with IRQs enabled
once the KVM hotplug hook is moved to the ONLINE section.

As above, the simple "fix" would be to disable IRQs, but that's not actually
necessary.  The only requirement is that preemption is disabled so that the checks
are done on the current CPU.  The "IRQs disabled" check was a deliberately
agressive WARN that was added to guard against doing compatibility checks from
the "wrong" location.

E.g. this is what I ended up with for a changelog to drop the irqs_disabled()
check and for the end code (though it's not tested yet...)

    Drop kvm_x86_check_processor_compatibility()'s WARN that IRQs are
    disabled, as the ONLINE section runs with IRQs disabled.  The WARN wasn't
    intended to be a requirement, e.g. disabling preemption is sufficient,
    the IRQ thing was purely an aggressive sanity check since the helper was
    only ever invoked via SMP function call.


static int kvm_x86_check_processor_compatibility(void)
{
        int cpu = smp_processor_id();
        struct cpuinfo_x86 *c = &cpu_data(cpu);

        /*
         * Compatibility checks are done when loading KVM and when enabling
         * hardware, e.g. during CPU hotplug, to ensure all online CPUs are
         * compatible, i.e. KVM should never perform a compatibility check on
         * an offline CPU.
         */
        WARN_ON(!cpu_online(cpu));

        if (__cr4_reserved_bits(cpu_has, c) !=
            __cr4_reserved_bits(cpu_has, &boot_cpu_data))
                return -EIO;

        return static_call(kvm_x86_check_processor_compatibility)();
}


int kvm_arch_hardware_enable(void)
{
        struct kvm *kvm;
        struct kvm_vcpu *vcpu;
        unsigned long i;
        int ret;
        u64 local_tsc;
        u64 max_tsc = 0;
        bool stable, backwards_tsc = false;

        kvm_user_return_msr_cpu_online();

        ret = kvm_x86_check_processor_compatibility();
        if (ret)
                return ret;

        ret = static_call(kvm_x86_hardware_enable)();
        if (ret != 0)
                return ret;


	....
}

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

  reply	other threads:[~2022-11-16 17:11 UTC|newest]

Thread overview: 635+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-11-02 23:18 [PATCH 00/44] KVM: Rework kvm_init() and hardware enabling Sean Christopherson
2022-11-02 23:18 ` Sean Christopherson
2022-11-02 23:18 ` Sean Christopherson
2022-11-02 23:18 ` Sean Christopherson
2022-11-02 23:18 ` Sean Christopherson
2022-11-02 23:18 ` [PATCH 01/44] KVM: Register /dev/kvm as the _very_ last thing during initialization Sean Christopherson
2022-11-02 23:18   ` Sean Christopherson
2022-11-02 23:18   ` Sean Christopherson
2022-11-02 23:18   ` Sean Christopherson
2022-11-02 23:18   ` Sean Christopherson
2022-11-02 23:18 ` [PATCH 02/44] KVM: Initialize IRQ FD after arch hardware setup Sean Christopherson
2022-11-02 23:18   ` Sean Christopherson
2022-11-02 23:18   ` Sean Christopherson
2022-11-02 23:18   ` Sean Christopherson
2022-11-02 23:18   ` Sean Christopherson
2022-11-04  0:41   ` Chao Gao
2022-11-04  0:41     ` Chao Gao
2022-11-04  0:41     ` Chao Gao
2022-11-04  0:41     ` Chao Gao
2022-11-04  0:41     ` Chao Gao
2022-11-04 20:15     ` Sean Christopherson
2022-11-04 20:15       ` Sean Christopherson
2022-11-04 20:15       ` Sean Christopherson
2022-11-04 20:15       ` Sean Christopherson
2022-11-04 20:15       ` Sean Christopherson
2022-11-02 23:18 ` [PATCH 03/44] KVM: Allocate cpus_hardware_enabled " Sean Christopherson
2022-11-02 23:18   ` Sean Christopherson
2022-11-02 23:18   ` Sean Christopherson
2022-11-02 23:18   ` Sean Christopherson
2022-11-02 23:18   ` Sean Christopherson
2022-11-04  5:37   ` Yuan Yao
2022-11-04  5:37     ` Yuan Yao
2022-11-04  5:37     ` Yuan Yao
2022-11-04  5:37     ` Yuan Yao
2022-11-04  5:37     ` Yuan Yao
2022-11-02 23:18 ` [PATCH 04/44] KVM: Teardown VFIO ops earlier in kvm_exit() Sean Christopherson
2022-11-02 23:18   ` Sean Christopherson
2022-11-02 23:18   ` Sean Christopherson
2022-11-02 23:18   ` Sean Christopherson
2022-11-02 23:18   ` Sean Christopherson
2022-11-03 12:46   ` Cornelia Huck
2022-11-03 12:46     ` Cornelia Huck
2022-11-03 12:46     ` Cornelia Huck
2022-11-03 12:46     ` Cornelia Huck
2022-11-03 12:46     ` Cornelia Huck
2022-11-07 17:56   ` Eric Farman
2022-11-07 17:56     ` Eric Farman
2022-11-07 17:56     ` Eric Farman
2022-11-07 17:56     ` Eric Farman
2022-11-07 17:56     ` Eric Farman
2022-11-02 23:18 ` [PATCH 05/44] KVM: s390: Unwind kvm_arch_init() piece-by-piece() if a step fails Sean Christopherson
2022-11-02 23:18   ` Sean Christopherson
2022-11-02 23:18   ` Sean Christopherson
2022-11-02 23:18   ` Sean Christopherson
2022-11-02 23:18   ` Sean Christopherson
2022-11-07 17:57   ` Eric Farman
2022-11-07 17:57     ` Eric Farman
2022-11-07 17:57     ` Eric Farman
2022-11-07 17:57     ` Eric Farman
2022-11-07 17:57     ` Eric Farman
2022-11-02 23:18 ` [PATCH 06/44] KVM: s390: Move hardware setup/unsetup to init/exit Sean Christopherson
2022-11-02 23:18   ` Sean Christopherson
2022-11-02 23:18   ` Sean Christopherson
2022-11-02 23:18   ` Sean Christopherson
2022-11-02 23:18   ` Sean Christopherson
2022-11-07 17:58   ` Eric Farman
2022-11-07 17:58     ` Eric Farman
2022-11-07 17:58     ` Eric Farman
2022-11-07 17:58     ` Eric Farman
2022-11-07 17:58     ` Eric Farman
2022-11-02 23:18 ` [PATCH 07/44] KVM: x86: Do timer initialization after XCR0 configuration Sean Christopherson
2022-11-02 23:18   ` Sean Christopherson
2022-11-02 23:18   ` Sean Christopherson
2022-11-02 23:18   ` Sean Christopherson
2022-11-02 23:18   ` Sean Christopherson
2022-11-02 23:18 ` [PATCH 08/44] KVM: x86: Move hardware setup/unsetup to init/exit Sean Christopherson
2022-11-02 23:18   ` Sean Christopherson
2022-11-02 23:18   ` Sean Christopherson
2022-11-02 23:18   ` Sean Christopherson
2022-11-02 23:18   ` Sean Christopherson
2022-11-04  6:22   ` Yuan Yao
2022-11-04  6:22     ` Yuan Yao
2022-11-04  6:22     ` Yuan Yao
2022-11-04  6:22     ` Yuan Yao
2022-11-04  6:22     ` Yuan Yao
2022-11-04 16:31     ` Sean Christopherson
2022-11-04 16:31       ` Sean Christopherson
2022-11-04 16:31       ` Sean Christopherson
2022-11-04 16:31       ` Sean Christopherson
2022-11-04 16:31       ` Sean Christopherson
2022-11-02 23:18 ` [PATCH 09/44] KVM: Drop arch hardware (un)setup hooks Sean Christopherson
2022-11-02 23:18   ` Sean Christopherson
2022-11-02 23:18   ` Sean Christopherson
2022-11-02 23:18   ` Sean Christopherson
2022-11-02 23:18   ` Sean Christopherson
2022-11-07  3:01   ` Anup Patel
2022-11-07  3:01     ` Anup Patel
2022-11-07  3:01     ` Anup Patel
2022-11-07  3:01     ` Anup Patel
2022-11-07  3:01     ` Anup Patel
2022-11-07 18:22   ` Eric Farman
2022-11-07 18:22     ` Eric Farman
2022-11-07 18:22     ` Eric Farman
2022-11-07 18:22     ` Eric Farman
2022-11-07 18:22     ` Eric Farman
2022-11-02 23:18 ` [PATCH 10/44] KVM: VMX: Clean up eVMCS enabling if KVM initialization fails Sean Christopherson
2022-11-02 23:18   ` Sean Christopherson
2022-11-02 23:18   ` Sean Christopherson
2022-11-02 23:18   ` Sean Christopherson
2022-11-02 23:18   ` Sean Christopherson
2022-11-03 14:01   ` Paolo Bonzini
2022-11-03 14:01     ` Paolo Bonzini
2022-11-03 14:01     ` Paolo Bonzini
2022-11-03 14:01     ` Paolo Bonzini
2022-11-03 14:01     ` Paolo Bonzini
2022-11-03 14:04     ` Paolo Bonzini
2022-11-03 14:04       ` Paolo Bonzini
2022-11-03 14:04       ` Paolo Bonzini
2022-11-03 14:04       ` Paolo Bonzini
2022-11-03 14:04       ` Paolo Bonzini
2022-11-03 14:28   ` Vitaly Kuznetsov
2022-11-03 14:28     ` Vitaly Kuznetsov
2022-11-03 14:28     ` Vitaly Kuznetsov
2022-11-03 14:28     ` Vitaly Kuznetsov
2022-11-03 14:28     ` Vitaly Kuznetsov
2022-11-11  1:38     ` Sean Christopherson
2022-11-11  1:38       ` Sean Christopherson
2022-11-11  1:38       ` Sean Christopherson
2022-11-11  1:38       ` Sean Christopherson
2022-11-11  1:38       ` Sean Christopherson
2022-11-15  9:30       ` Vitaly Kuznetsov
2022-11-15  9:30         ` Vitaly Kuznetsov
2022-11-15  9:30         ` Vitaly Kuznetsov
2022-11-15  9:30         ` Vitaly Kuznetsov
2022-11-15  9:30         ` Vitaly Kuznetsov
2022-11-02 23:18 ` [PATCH 11/44] KVM: x86: Move guts of kvm_arch_init() to standalone helper Sean Christopherson
2022-11-02 23:18   ` Sean Christopherson
2022-11-02 23:18   ` Sean Christopherson
2022-11-02 23:18   ` Sean Christopherson
2022-11-02 23:18   ` Sean Christopherson
2022-11-02 23:18 ` [PATCH 12/44] KVM: VMX: Do _all_ initialization before exposing /dev/kvm to userspace Sean Christopherson
2022-11-02 23:18   ` Sean Christopherson
2022-11-02 23:18   ` Sean Christopherson
2022-11-02 23:18   ` Sean Christopherson
2022-11-02 23:18   ` Sean Christopherson
2022-11-02 23:18 ` [PATCH 13/44] KVM: x86: Serialize vendor module initialization (hardware setup) Sean Christopherson
2022-11-02 23:18   ` Sean Christopherson
2022-11-02 23:18   ` Sean Christopherson
2022-11-02 23:18   ` Sean Christopherson
2022-11-02 23:18   ` Sean Christopherson
2022-11-16  1:46   ` Huang, Kai
2022-11-16  1:46     ` Huang, Kai
2022-11-16  1:46     ` Huang, Kai
2022-11-16  1:46     ` Huang, Kai
2022-11-16  1:46     ` Huang, Kai
2022-11-16 15:52     ` Sean Christopherson
2022-11-16 15:52       ` Sean Christopherson
2022-11-16 15:52       ` Sean Christopherson
2022-11-16 15:52       ` Sean Christopherson
2022-11-16 15:52       ` Sean Christopherson
2022-11-02 23:18 ` [PATCH 14/44] KVM: arm64: Simplify the CPUHP logic Sean Christopherson
2022-11-02 23:18   ` Sean Christopherson
2022-11-02 23:18   ` Sean Christopherson
2022-11-02 23:18   ` Sean Christopherson
2022-11-02 23:18   ` Sean Christopherson
2022-11-02 23:18 ` [PATCH 15/44] KVM: arm64: Free hypervisor allocations if vector slot init fails Sean Christopherson
2022-11-02 23:18   ` Sean Christopherson
2022-11-02 23:18   ` Sean Christopherson
2022-11-02 23:18   ` Sean Christopherson
2022-11-02 23:18   ` Sean Christopherson
2022-11-02 23:18 ` [PATCH 16/44] KVM: arm64: Unregister perf callbacks if hypervisor finalization fails Sean Christopherson
2022-11-02 23:18   ` Sean Christopherson
2022-11-02 23:18   ` Sean Christopherson
2022-11-02 23:18   ` Sean Christopherson
2022-11-02 23:18   ` Sean Christopherson
2022-11-02 23:18 ` [PATCH 17/44] KVM: arm64: Do arm/arch initialiation without bouncing through kvm_init() Sean Christopherson
2022-11-02 23:18   ` Sean Christopherson
2022-11-02 23:18   ` Sean Christopherson
2022-11-02 23:18   ` Sean Christopherson
2022-11-02 23:18   ` Sean Christopherson
2022-11-03  7:25   ` Philippe Mathieu-Daudé
2022-11-03  7:25     ` Philippe Mathieu-Daudé
2022-11-03  7:25     ` Philippe Mathieu-Daudé
2022-11-03  7:25     ` Philippe Mathieu-Daudé
2022-11-03  7:25     ` Philippe Mathieu-Daudé
2022-11-03 15:29     ` Sean Christopherson
2022-11-03 15:29       ` Sean Christopherson
2022-11-03 15:29       ` Sean Christopherson
2022-11-03 15:29       ` Sean Christopherson
2022-11-03 15:29       ` Sean Christopherson
2022-11-02 23:18 ` [PATCH 18/44] KVM: arm64: Mark kvm_arm_init() and its unique descendants as __init Sean Christopherson
2022-11-02 23:18   ` Sean Christopherson
2022-11-02 23:18   ` Sean Christopherson
2022-11-02 23:18   ` Sean Christopherson
2022-11-02 23:18   ` Sean Christopherson
2022-11-02 23:18 ` [PATCH 19/44] KVM: MIPS: Hardcode callbacks to hardware virtualization extensions Sean Christopherson
2022-11-02 23:18   ` Sean Christopherson
2022-11-02 23:18   ` Sean Christopherson
2022-11-02 23:18   ` Sean Christopherson
2022-11-02 23:18   ` Sean Christopherson
2022-11-02 23:18 ` [PATCH 20/44] KVM: MIPS: Setup VZ emulation? directly from kvm_mips_init() Sean Christopherson
2022-11-02 23:18   ` Sean Christopherson
2022-11-02 23:18   ` Sean Christopherson
2022-11-02 23:18   ` Sean Christopherson
2022-11-02 23:18   ` Sean Christopherson
2022-11-03  7:10   ` Philippe Mathieu-Daudé
2022-11-03  7:10     ` Philippe Mathieu-Daudé
2022-11-03  7:10     ` Philippe Mathieu-Daudé
2022-11-03  7:10     ` Philippe Mathieu-Daudé
2022-11-03  7:10     ` Philippe Mathieu-Daudé
2022-11-02 23:18 ` [PATCH 21/44] KVM: MIPS: Register die notifier prior to kvm_init() Sean Christopherson
2022-11-02 23:18   ` Sean Christopherson
2022-11-02 23:18   ` Sean Christopherson
2022-11-02 23:18   ` Sean Christopherson
2022-11-02 23:18   ` Sean Christopherson
2022-11-03  7:12   ` Philippe Mathieu-Daudé
2022-11-03  7:12     ` Philippe Mathieu-Daudé
2022-11-03  7:12     ` Philippe Mathieu-Daudé
2022-11-03  7:12     ` Philippe Mathieu-Daudé
2022-11-03  7:12     ` Philippe Mathieu-Daudé
2022-11-02 23:18 ` [PATCH 22/44] KVM: RISC-V: Do arch init directly in riscv_kvm_init() Sean Christopherson
2022-11-02 23:18   ` Sean Christopherson
2022-11-02 23:18   ` Sean Christopherson
2022-11-02 23:18   ` Sean Christopherson
2022-11-02 23:18   ` Sean Christopherson
2022-11-03  7:14   ` Philippe Mathieu-Daudé
2022-11-03  7:14     ` Philippe Mathieu-Daudé
2022-11-03  7:14     ` Philippe Mathieu-Daudé
2022-11-03  7:14     ` Philippe Mathieu-Daudé
2022-11-03  7:14     ` Philippe Mathieu-Daudé
2022-11-07  3:05   ` Anup Patel
2022-11-07  3:05     ` Anup Patel
2022-11-07  3:05     ` Anup Patel
2022-11-07  3:05     ` Anup Patel
2022-11-07  3:05     ` Anup Patel
2022-11-02 23:18 ` [PATCH 23/44] KVM: RISC-V: Tag init functions and data with __init, __ro_after_init Sean Christopherson
2022-11-02 23:18   ` Sean Christopherson
2022-11-02 23:18   ` Sean Christopherson
2022-11-02 23:18   ` Sean Christopherson
2022-11-02 23:18   ` Sean Christopherson
2022-11-07  3:10   ` Anup Patel
2022-11-07  3:10     ` Anup Patel
2022-11-07  3:10     ` Anup Patel
2022-11-07  3:10     ` Anup Patel
2022-11-07  3:10     ` Anup Patel
2022-11-02 23:18 ` [PATCH 24/44] KVM: PPC: Move processor compatibility check to module init Sean Christopherson
2022-11-02 23:18   ` Sean Christopherson
2022-11-02 23:18   ` Sean Christopherson
2022-11-02 23:18   ` Sean Christopherson
2022-11-02 23:18   ` Sean Christopherson
2022-11-02 23:18 ` [PATCH 25/44] KVM: s390: Do s390 specific init without bouncing through kvm_init() Sean Christopherson
2022-11-02 23:18   ` Sean Christopherson
2022-11-02 23:18   ` Sean Christopherson
2022-11-02 23:18   ` Sean Christopherson
2022-11-02 23:18   ` Sean Christopherson
2022-11-03  7:16   ` Philippe Mathieu-Daudé
2022-11-03  7:16     ` Philippe Mathieu-Daudé
2022-11-03  7:16     ` Philippe Mathieu-Daudé
2022-11-03  7:16     ` Philippe Mathieu-Daudé
2022-11-03  7:16     ` Philippe Mathieu-Daudé
2022-11-03 12:44   ` Claudio Imbrenda
2022-11-03 12:44     ` Claudio Imbrenda
2022-11-03 12:44     ` Claudio Imbrenda
2022-11-03 12:44     ` Claudio Imbrenda
2022-11-03 12:44     ` Claudio Imbrenda
2022-11-03 13:21     ` Claudio Imbrenda
2022-11-03 13:21       ` Claudio Imbrenda
2022-11-03 13:21       ` Claudio Imbrenda
2022-11-03 13:21       ` Claudio Imbrenda
2022-11-03 13:21       ` Claudio Imbrenda
2022-11-07 18:22   ` Eric Farman
2022-11-07 18:22     ` Eric Farman
2022-11-07 18:22     ` Eric Farman
2022-11-07 18:22     ` Eric Farman
2022-11-07 18:22     ` Eric Farman
2022-11-02 23:18 ` [PATCH 26/44] KVM: s390: Mark __kvm_s390_init() and its descendants as __init Sean Christopherson
2022-11-02 23:18   ` Sean Christopherson
2022-11-02 23:18   ` Sean Christopherson
2022-11-02 23:18   ` Sean Christopherson
2022-11-02 23:18   ` Sean Christopherson
2022-11-07 18:22   ` Eric Farman
2022-11-07 18:22     ` Eric Farman
2022-11-07 18:22     ` Eric Farman
2022-11-07 18:22     ` Eric Farman
2022-11-07 18:22     ` Eric Farman
2022-11-02 23:18 ` [PATCH 27/44] KVM: Drop kvm_arch_{init,exit}() hooks Sean Christopherson
2022-11-02 23:18   ` Sean Christopherson
2022-11-02 23:18   ` Sean Christopherson
2022-11-02 23:18   ` Sean Christopherson
2022-11-02 23:18   ` Sean Christopherson
2022-11-03  7:18   ` Philippe Mathieu-Daudé
2022-11-03  7:18     ` Philippe Mathieu-Daudé
2022-11-03  7:18     ` Philippe Mathieu-Daudé
2022-11-03  7:18     ` Philippe Mathieu-Daudé
2022-11-03  7:18     ` Philippe Mathieu-Daudé
2022-11-07  3:13   ` Anup Patel
2022-11-07  3:13     ` Anup Patel
2022-11-07  3:13     ` Anup Patel
2022-11-07  3:13     ` Anup Patel
2022-11-07  3:13     ` Anup Patel
2022-11-07 19:08   ` Eric Farman
2022-11-07 19:08     ` Eric Farman
2022-11-07 19:08     ` Eric Farman
2022-11-07 19:08     ` Eric Farman
2022-11-07 19:08     ` Eric Farman
2022-11-02 23:18 ` [PATCH 28/44] KVM: VMX: Make VMCS configuration/capabilities structs read-only after init Sean Christopherson
2022-11-02 23:18   ` Sean Christopherson
2022-11-02 23:18   ` Sean Christopherson
2022-11-02 23:18   ` Sean Christopherson
2022-11-02 23:18   ` Sean Christopherson
2022-11-02 23:18 ` [PATCH 29/44] KVM: x86: Do CPU compatibility checks in x86 code Sean Christopherson
2022-11-02 23:18   ` Sean Christopherson
2022-11-02 23:18   ` Sean Christopherson
2022-11-02 23:18   ` Sean Christopherson
2022-11-02 23:18   ` Sean Christopherson
2022-11-02 23:18 ` [PATCH 30/44] KVM: Drop kvm_arch_check_processor_compat() hook Sean Christopherson
2022-11-02 23:18   ` Sean Christopherson
2022-11-02 23:18   ` Sean Christopherson
2022-11-02 23:18   ` Sean Christopherson
2022-11-02 23:18   ` Sean Christopherson
2022-11-03  7:20   ` Philippe Mathieu-Daudé
2022-11-03  7:20     ` Philippe Mathieu-Daudé
2022-11-03  7:20     ` Philippe Mathieu-Daudé
2022-11-03  7:20     ` Philippe Mathieu-Daudé
2022-11-03  7:20     ` Philippe Mathieu-Daudé
2022-11-07  3:16   ` Anup Patel
2022-11-07  3:16     ` Anup Patel
2022-11-07  3:16     ` Anup Patel
2022-11-07  3:16     ` Anup Patel
2022-11-07  3:16     ` Anup Patel
2022-11-07 19:08   ` Eric Farman
2022-11-07 19:08     ` Eric Farman
2022-11-07 19:08     ` Eric Farman
2022-11-07 19:08     ` Eric Farman
2022-11-07 19:08     ` Eric Farman
2022-11-02 23:18 ` [PATCH 31/44] KVM: x86: Use KBUILD_MODNAME to specify vendor module name Sean Christopherson
2022-11-02 23:18   ` Sean Christopherson
2022-11-02 23:18   ` Sean Christopherson
2022-11-02 23:18   ` Sean Christopherson
2022-11-02 23:18   ` Sean Christopherson
2022-11-02 23:18 ` [PATCH 32/44] KVM: x86: Unify pr_fmt to use module name for all KVM modules Sean Christopherson
2022-11-02 23:18   ` Sean Christopherson
2022-11-02 23:18   ` Sean Christopherson
2022-11-02 23:18   ` Sean Christopherson
2022-11-02 23:18   ` Sean Christopherson
2022-11-10  7:31   ` Robert Hoo
2022-11-10  7:31     ` Robert Hoo
2022-11-10  7:31     ` Robert Hoo
2022-11-10  7:31     ` Robert Hoo
2022-11-10  7:31     ` Robert Hoo
2022-11-10 16:50     ` Sean Christopherson
2022-11-10 16:50       ` Sean Christopherson
2022-11-10 16:50       ` Sean Christopherson
2022-11-10 16:50       ` Sean Christopherson
2022-11-10 16:50       ` Sean Christopherson
2022-11-30 23:02       ` Sean Christopherson
2022-11-30 23:02         ` Sean Christopherson
2022-11-30 23:02         ` Sean Christopherson
2022-11-30 23:02         ` Sean Christopherson
2022-11-30 23:02         ` Sean Christopherson
2022-12-01  1:34         ` Robert Hoo
2022-12-01  1:34           ` Robert Hoo
2022-12-01  1:34           ` Robert Hoo
2022-12-01  1:34           ` Robert Hoo
2022-12-01  1:34           ` Robert Hoo
2022-11-02 23:19 ` [PATCH 33/44] KVM: x86: Do VMX/SVM support checks directly in vendor code Sean Christopherson
2022-11-02 23:19   ` Sean Christopherson
2022-11-02 23:19   ` Sean Christopherson
2022-11-02 23:19   ` Sean Christopherson
2022-11-02 23:19   ` Sean Christopherson
2022-11-03 15:08   ` Paolo Bonzini
2022-11-03 15:08     ` Paolo Bonzini
2022-11-03 15:08     ` Paolo Bonzini
2022-11-03 15:08     ` Paolo Bonzini
2022-11-03 15:08     ` Paolo Bonzini
2022-11-03 18:35     ` Sean Christopherson
2022-11-03 18:35       ` Sean Christopherson
2022-11-03 18:35       ` Sean Christopherson
2022-11-03 18:35       ` Sean Christopherson
2022-11-03 18:35       ` Sean Christopherson
2022-11-03 18:46       ` Paolo Bonzini
2022-11-03 18:46         ` Paolo Bonzini
2022-11-03 18:46         ` Paolo Bonzini
2022-11-03 18:46         ` Paolo Bonzini
2022-11-03 18:46         ` Paolo Bonzini
2022-11-03 18:58         ` Sean Christopherson
2022-11-03 18:58           ` Sean Christopherson
2022-11-03 18:58           ` Sean Christopherson
2022-11-03 18:58           ` Sean Christopherson
2022-11-03 18:58           ` Sean Christopherson
2022-11-04  8:02           ` Paolo Bonzini
2022-11-04  8:02             ` Paolo Bonzini
2022-11-04  8:02             ` Paolo Bonzini
2022-11-04  8:02             ` Paolo Bonzini
2022-11-04  8:02             ` Paolo Bonzini
2022-11-04 15:40             ` Sean Christopherson
2022-11-04 15:40               ` Sean Christopherson
2022-11-04 15:40               ` Sean Christopherson
2022-11-04 15:40               ` Sean Christopherson
2022-11-04 15:40               ` Sean Christopherson
2022-11-15 22:50   ` Huang, Kai
2022-11-15 22:50     ` Huang, Kai
2022-11-15 22:50     ` Huang, Kai
2022-11-15 22:50     ` Huang, Kai
2022-11-15 22:50     ` Huang, Kai
2022-11-16  1:56     ` Sean Christopherson
2022-11-16  1:56       ` Sean Christopherson
2022-11-16  1:56       ` Sean Christopherson
2022-11-16  1:56       ` Sean Christopherson
2022-11-16  1:56       ` Sean Christopherson
2022-11-02 23:19 ` [PATCH 34/44] KVM: VMX: Shuffle support checks and hardware enabling code around Sean Christopherson
2022-11-02 23:19   ` Sean Christopherson
2022-11-02 23:19   ` Sean Christopherson
2022-11-02 23:19   ` Sean Christopherson
2022-11-02 23:19   ` Sean Christopherson
2022-11-02 23:19 ` [PATCH 35/44] KVM: SVM: Check for SVM support in CPU compatibility checks Sean Christopherson
2022-11-02 23:19   ` Sean Christopherson
2022-11-02 23:19   ` Sean Christopherson
2022-11-02 23:19   ` Sean Christopherson
2022-11-02 23:19   ` Sean Christopherson
2022-11-02 23:19 ` [PATCH 36/44] KVM: x86: Do compatibility checks when onlining CPU Sean Christopherson
2022-11-02 23:19   ` Sean Christopherson
2022-11-02 23:19   ` Sean Christopherson
2022-11-02 23:19   ` Sean Christopherson
2022-11-02 23:19   ` Sean Christopherson
2022-11-03 15:17   ` Paolo Bonzini
2022-11-03 15:17     ` Paolo Bonzini
2022-11-03 15:17     ` Paolo Bonzini
2022-11-03 15:17     ` Paolo Bonzini
2022-11-03 15:17     ` Paolo Bonzini
2022-11-03 17:44     ` Sean Christopherson
2022-11-03 17:44       ` Sean Christopherson
2022-11-03 17:44       ` Sean Christopherson
2022-11-03 17:44       ` Sean Christopherson
2022-11-03 17:44       ` Sean Christopherson
2022-11-03 17:57       ` Paolo Bonzini
2022-11-03 17:57         ` Paolo Bonzini
2022-11-03 17:57         ` Paolo Bonzini
2022-11-03 17:57         ` Paolo Bonzini
2022-11-03 17:57         ` Paolo Bonzini
2022-11-03 21:04   ` Isaku Yamahata
2022-11-03 21:04     ` Isaku Yamahata
2022-11-03 21:04     ` Isaku Yamahata
2022-11-03 21:04     ` Isaku Yamahata
2022-11-03 21:04     ` Isaku Yamahata
2022-11-03 22:34     ` Sean Christopherson
2022-11-03 22:34       ` Sean Christopherson
2022-11-03 22:34       ` Sean Christopherson
2022-11-03 22:34       ` Sean Christopherson
2022-11-03 22:34       ` Sean Christopherson
2022-11-04  7:18       ` Isaku Yamahata
2022-11-04  7:18         ` Isaku Yamahata
2022-11-04  7:18         ` Isaku Yamahata
2022-11-04  7:18         ` Isaku Yamahata
2022-11-04  7:18         ` Isaku Yamahata
2022-11-11  0:06         ` Sean Christopherson
2022-11-11  0:06           ` Sean Christopherson
2022-11-11  0:06           ` Sean Christopherson
2022-11-11  0:06           ` Sean Christopherson
2022-11-11  0:06           ` Sean Christopherson
2022-11-02 23:19 ` [PATCH 37/44] KVM: Rename and move CPUHP_AP_KVM_STARTING to ONLINE section Sean Christopherson
2022-11-02 23:19   ` Sean Christopherson
2022-11-02 23:19   ` Sean Christopherson
2022-11-02 23:19   ` Sean Christopherson
2022-11-02 23:19   ` Sean Christopherson
2022-11-10  7:26   ` Robert Hoo
2022-11-10  7:26     ` Robert Hoo
2022-11-10  7:26     ` Robert Hoo
2022-11-10  7:26     ` Robert Hoo
2022-11-10  7:26     ` Robert Hoo
2022-11-10 16:49     ` Sean Christopherson
2022-11-10 16:49       ` Sean Christopherson
2022-11-10 16:49       ` Sean Christopherson
2022-11-10 16:49       ` Sean Christopherson
2022-11-10 16:49       ` Sean Christopherson
2022-11-02 23:19 ` [PATCH 38/44] KVM: Disable CPU hotplug during hardware enabling Sean Christopherson
2022-11-02 23:19   ` Sean Christopherson
2022-11-02 23:19   ` Sean Christopherson
2022-11-02 23:19   ` Sean Christopherson
2022-11-02 23:19   ` Sean Christopherson
2022-11-10  1:08   ` Huang, Kai
2022-11-10  1:08     ` Huang, Kai
2022-11-10  1:08     ` Huang, Kai
2022-11-10  1:08     ` Huang, Kai
2022-11-10  1:08     ` Huang, Kai
2022-11-10  2:20     ` Huang, Kai
2022-11-10  2:20       ` Huang, Kai
2022-11-10  2:20       ` Huang, Kai
2022-11-10  2:20       ` Huang, Kai
2022-11-10  2:20       ` Huang, Kai
2022-11-10  1:33   ` Huang, Kai
2022-11-10  1:33     ` Huang, Kai
2022-11-10  1:33     ` Huang, Kai
2022-11-10  1:33     ` Huang, Kai
2022-11-10  1:33     ` Huang, Kai
2022-11-10  2:11     ` Huang, Kai
2022-11-10  2:11       ` Huang, Kai
2022-11-10  2:11       ` Huang, Kai
2022-11-10  2:11       ` Huang, Kai
2022-11-10  2:11       ` Huang, Kai
2022-11-10 16:58       ` Sean Christopherson
2022-11-10 16:58         ` Sean Christopherson
2022-11-10 16:58         ` Sean Christopherson
2022-11-10 16:58         ` Sean Christopherson
2022-11-10 16:58         ` Sean Christopherson
2022-11-15 20:16       ` Sean Christopherson
2022-11-15 20:16         ` Sean Christopherson
2022-11-15 20:16         ` Sean Christopherson
2022-11-15 20:16         ` Sean Christopherson
2022-11-15 20:16         ` Sean Christopherson
2022-11-15 20:21         ` Sean Christopherson
2022-11-15 20:21           ` Sean Christopherson
2022-11-15 20:21           ` Sean Christopherson
2022-11-15 20:21           ` Sean Christopherson
2022-11-15 20:21           ` Sean Christopherson
2022-11-16 12:23         ` Huang, Kai
2022-11-16 12:23           ` Huang, Kai
2022-11-16 12:23           ` Huang, Kai
2022-11-16 12:23           ` Huang, Kai
2022-11-16 12:23           ` Huang, Kai
2022-11-16 17:11           ` Sean Christopherson [this message]
2022-11-16 17:11             ` Sean Christopherson
2022-11-16 17:11             ` Sean Christopherson
2022-11-16 17:11             ` Sean Christopherson
2022-11-16 17:11             ` Sean Christopherson
2022-11-17  1:39             ` Huang, Kai
2022-11-17  1:39               ` Huang, Kai
2022-11-17  1:39               ` Huang, Kai
2022-11-17  1:39               ` Huang, Kai
2022-11-17  1:39               ` Huang, Kai
2022-11-17 15:16               ` Sean Christopherson
2022-11-17 15:16                 ` Sean Christopherson
2022-11-17 15:16                 ` Sean Christopherson
2022-11-17 15:16                 ` Sean Christopherson
2022-11-17 15:16                 ` Sean Christopherson
2022-11-02 23:19 ` [PATCH 39/44] KVM: Drop kvm_count_lock and instead protect kvm_usage_count with kvm_lock Sean Christopherson
2022-11-02 23:19   ` Sean Christopherson
2022-11-02 23:19   ` Sean Christopherson
2022-11-02 23:19   ` Sean Christopherson
2022-11-02 23:19   ` Sean Christopherson
2022-11-03 15:23   ` Paolo Bonzini
2022-11-03 15:23     ` Paolo Bonzini
2022-11-03 15:23     ` Paolo Bonzini
2022-11-03 15:23     ` Paolo Bonzini
2022-11-03 15:23     ` Paolo Bonzini
2022-11-03 17:53     ` Sean Christopherson
2022-11-03 17:53       ` Sean Christopherson
2022-11-03 17:53       ` Sean Christopherson
2022-11-03 17:53       ` Sean Christopherson
2022-11-03 17:53       ` Sean Christopherson
2022-11-02 23:19 ` [PATCH 40/44] KVM: Remove on_each_cpu(hardware_disable_nolock) in kvm_exit() Sean Christopherson
2022-11-02 23:19   ` Sean Christopherson
2022-11-02 23:19   ` Sean Christopherson
2022-11-02 23:19   ` Sean Christopherson
2022-11-02 23:19   ` Sean Christopherson
2022-11-02 23:19 ` [PATCH 41/44] KVM: Use a per-CPU variable to track which CPUs have enabled virtualization Sean Christopherson
2022-11-02 23:19   ` Sean Christopherson
2022-11-02 23:19   ` Sean Christopherson
2022-11-02 23:19   ` Sean Christopherson
2022-11-02 23:19   ` Sean Christopherson
2022-11-02 23:19 ` [PATCH 42/44] KVM: Make hardware_enable_failed a local variable in the "enable all" path Sean Christopherson
2022-11-02 23:19   ` Sean Christopherson
2022-11-02 23:19   ` Sean Christopherson
2022-11-02 23:19   ` Sean Christopherson
2022-11-02 23:19   ` Sean Christopherson
2022-11-02 23:19 ` [PATCH 43/44] KVM: Register syscore (suspend/resume) ops early in kvm_init() Sean Christopherson
2022-11-02 23:19   ` Sean Christopherson
2022-11-02 23:19   ` Sean Christopherson
2022-11-02 23:19   ` Sean Christopherson
2022-11-02 23:19   ` Sean Christopherson
2022-11-02 23:19 ` [PATCH 44/44] KVM: Opt out of generic hardware enabling on s390 and PPC Sean Christopherson
2022-11-02 23:19   ` Sean Christopherson
2022-11-02 23:19   ` Sean Christopherson
2022-11-02 23:19   ` Sean Christopherson
2022-11-02 23:19   ` Sean Christopherson
2022-11-07  3:23   ` Anup Patel
2022-11-07  3:23     ` Anup Patel
2022-11-07  3:23     ` Anup Patel
2022-11-07  3:23     ` Anup Patel
2022-11-07  3:23     ` Anup Patel
2022-11-03 12:08 ` [PATCH 00/44] KVM: Rework kvm_init() and hardware enabling Christian Borntraeger
2022-11-03 12:08   ` Christian Borntraeger
2022-11-03 12:08   ` Christian Borntraeger
2022-11-03 12:08   ` Christian Borntraeger
2022-11-03 12:08   ` Christian Borntraeger
2022-11-03 15:27   ` Paolo Bonzini
2022-11-03 15:27     ` Paolo Bonzini
2022-11-03 15:27     ` Paolo Bonzini
2022-11-03 15:27     ` Paolo Bonzini
2022-11-03 15:27     ` Paolo Bonzini
2022-11-04  7:17 ` Isaku Yamahata
2022-11-04  7:17   ` Isaku Yamahata
2022-11-04  7:17   ` Isaku Yamahata
2022-11-04  7:17   ` Isaku Yamahata
2022-11-04  7:17   ` Isaku Yamahata
2022-11-04  7:59   ` Paolo Bonzini
2022-11-04  7:59     ` Paolo Bonzini
2022-11-04  7:59     ` Paolo Bonzini
2022-11-04  7:59     ` Paolo Bonzini
2022-11-04  7:59     ` Paolo Bonzini
2022-11-04 20:27   ` Sean Christopherson
2022-11-04 20:27     ` Sean Christopherson
2022-11-04 20:27     ` Sean Christopherson
2022-11-04 20:27     ` Sean Christopherson
2022-11-04 20:27     ` Sean Christopherson
2022-11-07 21:46     ` Isaku Yamahata
2022-11-07 21:46       ` Isaku Yamahata
2022-11-07 21:46       ` Isaku Yamahata
2022-11-07 21:46       ` Isaku Yamahata
2022-11-07 21:46       ` Isaku Yamahata
2022-11-08  1:09       ` Huang, Kai
2022-11-08  1:09         ` Huang, Kai
2022-11-08  1:09         ` Huang, Kai
2022-11-08  1:09         ` Huang, Kai
2022-11-08  1:09         ` Huang, Kai
2022-11-08  5:43         ` Isaku Yamahata
2022-11-08  5:43           ` Isaku Yamahata
2022-11-08  5:43           ` Isaku Yamahata
2022-11-08  5:43           ` Isaku Yamahata
2022-11-08  5:43           ` Isaku Yamahata
2022-11-08  8:56           ` Huang, Kai
2022-11-08  8:56             ` Huang, Kai
2022-11-08  8:56             ` Huang, Kai
2022-11-08  8:56             ` Huang, Kai
2022-11-08  8:56             ` Huang, Kai
2022-11-08 10:35             ` Huang, Kai
2022-11-08 10:35               ` Huang, Kai
2022-11-08 10:35               ` Huang, Kai
2022-11-08 10:35               ` Huang, Kai
2022-11-08 10:35               ` Huang, Kai
2022-11-08 17:46       ` Sean Christopherson
2022-11-08 17:46         ` Sean Christopherson
2022-11-08 17:46         ` Sean Christopherson
2022-11-08 17:46         ` Sean Christopherson
2022-11-08 17:46         ` Sean Christopherson

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=Y3UZtoIidMyE8qVz@google.com \
    --to=seanjc@google.com \
    --cc=aleksandar.qemu.devel@gmail.com \
    --cc=alexandru.elisei@arm.com \
    --cc=anup@brainfault.org \
    --cc=aou@eecs.berkeley.edu \
    --cc=atishp@atishpatra.org \
    --cc=borntraeger@linux.ibm.com \
    --cc=chao.gao@intel.com \
    --cc=chenhuacai@kernel.org \
    --cc=david@redhat.com \
    --cc=farman@linux.ibm.com \
    --cc=farosas@linux.ibm.com \
    --cc=frankja@linux.ibm.com \
    --cc=imbrenda@linux.ibm.com \
    --cc=isaku.yamahata@intel.com \
    --cc=james.morse@arm.com \
    --cc=kai.huang@intel.com \
    --cc=kvm-riscv@lists.infradead.org \
    --cc=kvm@vger.kernel.org \
    --cc=kvmarm@lists.cs.columbia.edu \
    --cc=kvmarm@lists.linux.dev \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mips@vger.kernel.org \
    --cc=linux-riscv@lists.infradead.org \
    --cc=linux-s390@vger.kernel.org \
    --cc=linuxppc-dev@lists.ozlabs.org \
    --cc=maz@kernel.org \
    --cc=mjrosato@linux.ibm.com \
    --cc=mpe@ellerman.id.au \
    --cc=oliver.upton@linux.dev \
    --cc=palmer@dabbelt.com \
    --cc=paul.walmsley@sifive.com \
    --cc=pbonzini@redhat.com \
    --cc=suzuki.poulose@arm.com \
    --cc=tglx@linutronix.de \
    --cc=vkuznets@redhat.com \
    --cc=yuan.yao@intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.