All of lore.kernel.org
 help / color / mirror / Atom feed
From: Tianyu Lan <ltykernel@gmail.com>
To: Dave Hansen <dave.hansen@intel.com>,
	kys@microsoft.com, haiyangz@microsoft.com,
	sthemmin@microsoft.com, wei.liu@kernel.org, decui@microsoft.com,
	tglx@linutronix.de, mingo@redhat.com, bp@alien8.de,
	x86@kernel.org, hpa@zytor.com, dave.hansen@linux.intel.com,
	luto@kernel.org, peterz@infradead.org, konrad.wilk@oracle.com,
	boris.ostrovsky@oracle.com, jgross@suse.com,
	sstabellini@kernel.org, joro@8bytes.org, will@kernel.org,
	davem@davemloft.net, kuba@kernel.org, jejb@linux.ibm.com,
	martin.petersen@oracle.com, arnd@arndb.de, hch@lst.de,
	m.szyprowski@samsung.com, robin.murphy@arm.com,
	thomas.lendacky@amd.com, brijesh.singh@amd.com, ardb@kernel.org,
	Tianyu.Lan@microsoft.com, rientjes@google.com,
	martin.b.radev@gmail.com, akpm@linux-foundation.org,
	rppt@kernel.org, kirill.shutemov@linux.intel.com,
	aneesh.kumar@linux.ibm.com, krish.sadhukhan@oracle.com,
	saravanand@fb.com, xen-devel@lists.xenproject.org,
	pgonda@google.com, david@redhat.com, keescook@chromium.org,
	hannes@cmpxchg.org, sfr@canb.auug.org.au,
	michael.h.kelley@microsoft.com
Cc: iommu@lists.linux-foundation.org, linux-arch@vger.kernel.org,
	linux-hyperv@vger.kernel.org, linux-kernel@vger.kernel.org,
	linux-scsi@vger.kernel.org, netdev@vger.kernel.org,
	vkuznets@redhat.com, anparri@microsoft.com
Subject: Re: [PATCH 03/13] x86/HV: Add new hvcall guest address host visibility support
Date: Thu, 29 Jul 2021 23:02:16 +0800	[thread overview]
Message-ID: <8df2845d-ee90-56d0-1228-adebb103ec37@gmail.com> (raw)
In-Reply-To: <ec1d4cfd-bbbc-e27a-7589-e85d9f0438f4@intel.com>

On 7/29/2021 10:09 PM, Dave Hansen wrote:
> On 7/29/21 6:01 AM, Tianyu Lan wrote:
>> On 7/29/2021 1:06 AM, Dave Hansen wrote:
>>> On 7/28/21 7:52 AM, Tianyu Lan wrote:
>>>> @@ -1986,7 +1988,9 @@ static int __set_memory_enc_dec(unsigned long
>>>> addr, int numpages, bool enc)
>>>>        int ret;
>>>>          /* Nothing to do if memory encryption is not active */
>>>> -    if (!mem_encrypt_active())
>>>> +    if (hv_is_isolation_supported())
>>>> +        return hv_set_mem_enc(addr, numpages, enc);
>>>> +    else if (!mem_encrypt_active())
>>>>            return 0;
>>>
>>> One more thing.  If you're going to be patching generic code, please
>>> start using feature checks that can get optimized away at runtime.
>>> hv_is_isolation_supported() doesn't look like the world's cheapest
>>> check.  It can't be inlined and costs at least a function call.
>>
>> Yes, you are right. How about adding a static branch key for the check
>> of isolation VM? This may reduce the check cost.
> 
> I don't think you need a static key.
> 
> There are basically three choices:
> 1. Use an existing X86_FEATURE bit.  I think there's already one for
>     when you are running under a hypervisor.  It's not super precise,
>     but it's better than what you have.
> 2. Define a new X86_FEATURE bit for when you are running under
>     Hyper-V.
> 3. Define a new X86_FEATURE bit specifically for Hyper-V isolation VM
>     support.  This particular feature might be a little uncommon to
>     deserve its own bit.
> 
> I'd probably just do #2.
> 

There is x86_hyper_type to identify hypervisor type and we may check 
this variable after checking X86_FEATURE_HYPERVISOR.

static inline bool hv_is_isolation_supported(void)
{
	if (!cpu_feature_enabled(X86_FEATURE_HYPERVISOR))
		return 0;

         if (x86_hyper_type != X86_HYPER_MS_HYPERV)
                 return 0;

	// out of line function call:
	return __hv_is_isolation_supported();
}	

WARNING: multiple messages have this Message-ID (diff)
From: Tianyu Lan <ltykernel@gmail.com>
To: Dave Hansen <dave.hansen@intel.com>,
	kys@microsoft.com, haiyangz@microsoft.com,
	sthemmin@microsoft.com, wei.liu@kernel.org, decui@microsoft.com,
	tglx@linutronix.de, mingo@redhat.com, bp@alien8.de,
	x86@kernel.org, hpa@zytor.com, dave.hansen@linux.intel.com,
	luto@kernel.org, peterz@infradead.org, konrad.wilk@oracle.com,
	boris.ostrovsky@oracle.com, jgross@suse.com,
	sstabellini@kernel.org, joro@8bytes.org, will@kernel.org,
	davem@davemloft.net, kuba@kernel.org, jejb@linux.ibm.com,
	martin.petersen@oracle.com, arnd@arndb.de, hch@lst.de,
	m.szyprowski@samsung.com, robin.murphy@arm.com,
	thomas.lendacky@amd.com, brijesh.singh@amd.com, ardb@kernel.org,
	Tianyu.Lan@microsoft.com, rientjes@google.com,
	martin.b.radev@gmail.com, akpm@linux-foundation.org,
	rppt@kernel.org, kirill.shutemov@linux.intel.com,
	aneesh.kumar@linux.ibm.com, krish.sadhukhan@oracle.com,
	saravanand@fb.com, xen-devel@lists.xenproject.org,
	pgonda@google.com, david@redhat.com, keescook@chromium.org,
	hannes@cmpxchg.org, sfr@canb.auug.org.au,
	michael.h.kelley@microsoft.com
Cc: linux-arch@vger.kernel.org, linux-hyperv@vger.kernel.org,
	linux-scsi@vger.kernel.org, netdev@vger.kernel.org,
	linux-kernel@vger.kernel.org, iommu@lists.linux-foundation.org,
	anparri@microsoft.com, vkuznets@redhat.com
Subject: Re: [PATCH 03/13] x86/HV: Add new hvcall guest address host visibility support
Date: Thu, 29 Jul 2021 23:02:16 +0800	[thread overview]
Message-ID: <8df2845d-ee90-56d0-1228-adebb103ec37@gmail.com> (raw)
In-Reply-To: <ec1d4cfd-bbbc-e27a-7589-e85d9f0438f4@intel.com>

On 7/29/2021 10:09 PM, Dave Hansen wrote:
> On 7/29/21 6:01 AM, Tianyu Lan wrote:
>> On 7/29/2021 1:06 AM, Dave Hansen wrote:
>>> On 7/28/21 7:52 AM, Tianyu Lan wrote:
>>>> @@ -1986,7 +1988,9 @@ static int __set_memory_enc_dec(unsigned long
>>>> addr, int numpages, bool enc)
>>>>        int ret;
>>>>          /* Nothing to do if memory encryption is not active */
>>>> -    if (!mem_encrypt_active())
>>>> +    if (hv_is_isolation_supported())
>>>> +        return hv_set_mem_enc(addr, numpages, enc);
>>>> +    else if (!mem_encrypt_active())
>>>>            return 0;
>>>
>>> One more thing.  If you're going to be patching generic code, please
>>> start using feature checks that can get optimized away at runtime.
>>> hv_is_isolation_supported() doesn't look like the world's cheapest
>>> check.  It can't be inlined and costs at least a function call.
>>
>> Yes, you are right. How about adding a static branch key for the check
>> of isolation VM? This may reduce the check cost.
> 
> I don't think you need a static key.
> 
> There are basically three choices:
> 1. Use an existing X86_FEATURE bit.  I think there's already one for
>     when you are running under a hypervisor.  It's not super precise,
>     but it's better than what you have.
> 2. Define a new X86_FEATURE bit for when you are running under
>     Hyper-V.
> 3. Define a new X86_FEATURE bit specifically for Hyper-V isolation VM
>     support.  This particular feature might be a little uncommon to
>     deserve its own bit.
> 
> I'd probably just do #2.
> 

There is x86_hyper_type to identify hypervisor type and we may check 
this variable after checking X86_FEATURE_HYPERVISOR.

static inline bool hv_is_isolation_supported(void)
{
	if (!cpu_feature_enabled(X86_FEATURE_HYPERVISOR))
		return 0;

         if (x86_hyper_type != X86_HYPER_MS_HYPERV)
                 return 0;

	// out of line function call:
	return __hv_is_isolation_supported();
}	
_______________________________________________
iommu mailing list
iommu@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/iommu

  reply	other threads:[~2021-07-29 15:02 UTC|newest]

Thread overview: 84+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-07-28 14:52 [PATCH 00/13] x86/Hyper-V: Add Hyper-V Isolation VM support Tianyu Lan
2021-07-28 14:52 ` Tianyu Lan
2021-07-28 14:52 ` [PATCH 01/13] x86/HV: Initialize GHCB page in Isolation VM Tianyu Lan
2021-07-28 14:52   ` Tianyu Lan
2021-08-02 11:53   ` Joerg Roedel
2021-08-02 11:53     ` Joerg Roedel
2021-08-02 12:35     ` Tianyu Lan
2021-08-02 12:35       ` Tianyu Lan
2021-07-28 14:52 ` [PATCH 02/13] x86/HV: Initialize shared memory boundary in the " Tianyu Lan
2021-07-28 14:52   ` Tianyu Lan
2021-07-28 14:52 ` [PATCH 03/13] x86/HV: Add new hvcall guest address host visibility support Tianyu Lan
2021-07-28 14:52   ` Tianyu Lan
2021-07-28 15:29   ` Dave Hansen
2021-07-28 15:29     ` Dave Hansen
2021-07-29 12:49     ` Tianyu Lan
2021-07-29 12:49       ` Tianyu Lan
2021-08-02 12:01     ` Joerg Roedel
2021-08-02 12:01       ` Joerg Roedel
2021-08-02 12:59       ` Tianyu Lan
2021-08-02 12:59         ` Tianyu Lan
2021-08-02 13:11       ` Juergen Gross
2021-08-02 13:11         ` Juergen Gross via iommu
2021-08-02 13:30         ` Joerg Roedel
2021-08-02 13:30           ` Joerg Roedel
2021-07-28 17:06   ` Dave Hansen
2021-07-28 17:06     ` Dave Hansen
2021-07-29 13:01     ` Tianyu Lan
2021-07-29 13:01       ` Tianyu Lan
2021-07-29 14:09       ` Dave Hansen
2021-07-29 14:09         ` Dave Hansen
2021-07-29 15:02         ` Tianyu Lan [this message]
2021-07-29 15:02           ` Tianyu Lan
2021-07-29 16:05           ` Dave Hansen
2021-07-29 16:05             ` Dave Hansen
2021-07-30  2:52             ` Tianyu Lan
2021-07-30  2:52               ` Tianyu Lan
2021-07-28 14:52 ` [PATCH 04/13] HV: Mark vmbus ring buffer visible to host in Isolation VM Tianyu Lan
2021-07-28 14:52   ` Tianyu Lan
2021-08-02 12:07   ` Joerg Roedel
2021-08-02 12:07     ` Joerg Roedel
2021-08-02 12:56     ` Tianyu Lan
2021-08-02 12:56       ` Tianyu Lan
2021-08-02 12:59       ` Joerg Roedel
2021-08-02 12:59         ` Joerg Roedel
2021-08-02 13:08         ` Tianyu Lan
2021-08-02 13:08           ` Tianyu Lan
2021-07-28 14:52 ` [PATCH 05/13] HV: Add Write/Read MSR registers via ghcb page Tianyu Lan
2021-07-28 14:52   ` Tianyu Lan
2021-08-02 12:28   ` Joerg Roedel
2021-08-02 12:28     ` Joerg Roedel
2021-08-02 13:18     ` Tianyu Lan
2021-08-02 13:18       ` Tianyu Lan
2021-07-28 14:52 ` [PATCH 06/13] HV: Add ghcb hvcall support for SNP VM Tianyu Lan
2021-07-28 14:52   ` Tianyu Lan
2021-08-02 12:39   ` Joerg Roedel
2021-08-02 12:39     ` Joerg Roedel
2021-08-02 13:32     ` Tianyu Lan
2021-08-02 13:32       ` Tianyu Lan
2021-07-28 14:52 ` [PATCH 07/13] HV/Vmbus: Add SNP support for VMbus channel initiate message Tianyu Lan
2021-07-28 14:52   ` Tianyu Lan
2021-08-02 12:58   ` Joerg Roedel
2021-08-02 12:58     ` Joerg Roedel
2021-07-28 14:52 ` [PATCH 08/13] HV/Vmbus: Initialize VMbus ring buffer for Isolation VM Tianyu Lan
2021-07-28 14:52   ` Tianyu Lan
2021-07-28 14:52 ` [PATCH 09/13] DMA: Add dma_map_decrypted/dma_unmap_encrypted() function Tianyu Lan
2021-07-28 14:52   ` Tianyu Lan
2021-07-29 15:13   ` Tianyu Lan
2021-07-29 15:13     ` Tianyu Lan
2021-07-28 14:52 ` [PATCH 10/13] x86/Swiotlb: Add Swiotlb bounce buffer remap function for HV IVM Tianyu Lan
2021-07-28 14:52   ` Tianyu Lan
2021-07-29 16:29   ` Konrad Rzeszutek Wilk
2021-07-29 16:29     ` Konrad Rzeszutek Wilk
2021-07-30  4:10     ` Tianyu Lan
2021-07-30  4:10       ` Tianyu Lan
2021-07-28 14:52 ` [PATCH 11/13] HV/IOMMU: Enable swiotlb bounce buffer for Isolation VM Tianyu Lan
2021-07-28 14:52   ` Tianyu Lan
2021-07-28 14:52 ` [PATCH 12/13] HV/Netvsc: Add Isolation VM support for netvsc driver Tianyu Lan
2021-07-28 14:52   ` Tianyu Lan
2021-07-28 14:52 ` [PATCH 13/13] HV/Storvsc: Add Isolation VM support for storvsc driver Tianyu Lan
2021-07-28 14:52   ` Tianyu Lan
2021-08-02 13:20   ` Joerg Roedel
2021-08-02 13:20     ` Joerg Roedel
2021-08-02 14:08     ` Tianyu Lan
2021-08-02 14:08       ` Tianyu Lan

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=8df2845d-ee90-56d0-1228-adebb103ec37@gmail.com \
    --to=ltykernel@gmail.com \
    --cc=Tianyu.Lan@microsoft.com \
    --cc=akpm@linux-foundation.org \
    --cc=aneesh.kumar@linux.ibm.com \
    --cc=anparri@microsoft.com \
    --cc=ardb@kernel.org \
    --cc=arnd@arndb.de \
    --cc=boris.ostrovsky@oracle.com \
    --cc=bp@alien8.de \
    --cc=brijesh.singh@amd.com \
    --cc=dave.hansen@intel.com \
    --cc=dave.hansen@linux.intel.com \
    --cc=davem@davemloft.net \
    --cc=david@redhat.com \
    --cc=decui@microsoft.com \
    --cc=haiyangz@microsoft.com \
    --cc=hannes@cmpxchg.org \
    --cc=hch@lst.de \
    --cc=hpa@zytor.com \
    --cc=iommu@lists.linux-foundation.org \
    --cc=jejb@linux.ibm.com \
    --cc=jgross@suse.com \
    --cc=joro@8bytes.org \
    --cc=keescook@chromium.org \
    --cc=kirill.shutemov@linux.intel.com \
    --cc=konrad.wilk@oracle.com \
    --cc=krish.sadhukhan@oracle.com \
    --cc=kuba@kernel.org \
    --cc=kys@microsoft.com \
    --cc=linux-arch@vger.kernel.org \
    --cc=linux-hyperv@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-scsi@vger.kernel.org \
    --cc=luto@kernel.org \
    --cc=m.szyprowski@samsung.com \
    --cc=martin.b.radev@gmail.com \
    --cc=martin.petersen@oracle.com \
    --cc=michael.h.kelley@microsoft.com \
    --cc=mingo@redhat.com \
    --cc=netdev@vger.kernel.org \
    --cc=peterz@infradead.org \
    --cc=pgonda@google.com \
    --cc=rientjes@google.com \
    --cc=robin.murphy@arm.com \
    --cc=rppt@kernel.org \
    --cc=saravanand@fb.com \
    --cc=sfr@canb.auug.org.au \
    --cc=sstabellini@kernel.org \
    --cc=sthemmin@microsoft.com \
    --cc=tglx@linutronix.de \
    --cc=thomas.lendacky@amd.com \
    --cc=vkuznets@redhat.com \
    --cc=wei.liu@kernel.org \
    --cc=will@kernel.org \
    --cc=x86@kernel.org \
    --cc=xen-devel@lists.xenproject.org \
    /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.