All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Lendacky, Thomas" <Thomas.Lendacky@amd.com>
To: lijiang <lijiang@redhat.com>
Cc: "tony.luck@intel.com" <tony.luck@intel.com>,
	"fenghua.yu@intel.com" <fenghua.yu@intel.com>,
	"linux-efi@vger.kernel.org" <linux-efi@vger.kernel.org>,
	"linux-ia64@vger.kernel.org" <linux-ia64@vger.kernel.org>,
	"bhe@redhat.com" <bhe@redhat.com>,
	"ard.biesheuvel@linaro.org" <ard.biesheuvel@linaro.org>,
	"peterz@infradead.org" <peterz@infradead.org>,
	"x86@kernel.org" <x86@kernel.org>,
	"kexec@lists.infradead.org" <kexec@lists.infradead.org>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	"dave.hansen@linux.intel.com" <dave.hansen@linux.intel.com>,
	"mingo@redhat.com" <mingo@redhat.com>,
	"bp@alien8.de" <bp@alien8.de>,
	"luto@kernel.org" <luto@kernel.org>,
	Toshi Kani <toshi.kani@hp.com>,
	"tglx@linutronix.de" <tglx@linutronix.de>,
	Dave Young <dyoung@redhat.com>,
	"akpm@linux-foundation.org" <akpm@linux-foundation.org>,
	Dan Williams <dan.j.williams@intel.com>
Subject: Re: [PATCH 1/2 v8] resource: add the new I/O resource descriptor 'IORES_DESC_RESERVED'
Date: Mon, 25 Mar 2019 19:34:25 +0000	[thread overview]
Message-ID: <b1556461-fe83-2ba0-00a3-e8ecf3e286fe@amd.com> (raw)
In-Reply-To: <95661569-d9c9-af13-11c4-c0d752710a1f@redhat.com>

On 3/16/19 2:31 AM, lijiang wrote:
> 
> 
> 在 2018年12月05日 05:33, Lendacky, Thomas 写道:
>> On 11/29/2018 09:37 PM, Dave Young wrote:
>>> + more people
>>>
>>> On 11/29/18 at 04:09pm, Lianbo Jiang wrote:
>>>> When doing kexec_file_load, the first kernel needs to pass the e820
>>>> reserved ranges to the second kernel. But kernel can not exactly
>>>> match the e820 reserved ranges when walking through the iomem resources
>>>> with the descriptor 'IORES_DESC_NONE', because several e820 types(
>>>> e.g. E820_TYPE_RESERVED_KERN/E820_TYPE_RAM/E820_TYPE_UNUSABLE/E820
>>>> _TYPE_RESERVED) are converted to the descriptor 'IORES_DESC_NONE'. It
>>>> may pass these four types to the kdump kernel, that is not desired result.
>>>>
>>>> So, this patch adds a new I/O resource descriptor 'IORES_DESC_RESERVED'
>>>> for the iomem resources search interfaces. It is helpful to exactly
>>>> match the reserved resource ranges when walking through iomem resources.
>>>>
>>>> In addition, since the new descriptor 'IORES_DESC_RESERVED' is introduced,
>>>> these code originally related to the descriptor 'IORES_DESC_NONE' need to
>>>> be updated. Otherwise, it will be easily confused and also cause some
>>>> errors. Because the 'E820_TYPE_RESERVED' type is converted to the new
>>>> descriptor 'IORES_DESC_RESERVED' instead of 'IORES_DESC_NONE', it has been
>>>> changed.
>>>>
>>>> Suggested-by: Dave Young <dyoung@redhat.com>
>>>> Signed-off-by: Lianbo Jiang <lijiang@redhat.com>
>>>> ---
>>>>  arch/ia64/kernel/efi.c |  4 ++++
>>>>  arch/x86/kernel/e820.c |  2 +-
>>>>  arch/x86/mm/ioremap.c  | 13 ++++++++++++-
>>>>  include/linux/ioport.h |  1 +
>>>>  kernel/resource.c      |  6 +++---
>>>>  5 files changed, 21 insertions(+), 5 deletions(-)
>>>>
>>>> diff --git a/arch/ia64/kernel/efi.c b/arch/ia64/kernel/efi.c
>>>> index 8f106638913c..1841e9b4db30 100644
>>>> --- a/arch/ia64/kernel/efi.c
>>>> +++ b/arch/ia64/kernel/efi.c
>>>> @@ -1231,6 +1231,10 @@ efi_initialize_iomem_resources(struct resource *code_resource,
>>>>  				break;
>>>>  
>>>>  			case EFI_RESERVED_TYPE:
>>>> +				name = "reserved";
>>>
>>> Ingo updated X86 code to use "Reserved",  I think it would be good to do
>>> same for this case as well
>>>
>>>> +				desc = IORES_DESC_RESERVED;
>>>> +				break;
>>>> +
>>>>  			case EFI_RUNTIME_SERVICES_CODE:
>>>>  			case EFI_RUNTIME_SERVICES_DATA:
>>>>  			case EFI_ACPI_RECLAIM_MEMORY:
>>>
>>> Originally, above 3 are all "reserved", so probably they all should be
>>> IORES_DESC_RESERVED.
>>>
>>> Can any IA64 people to review this?
>>>
>>>> diff --git a/arch/x86/kernel/e820.c b/arch/x86/kernel/e820.c
>>>> index 50895c2f937d..57fafdafb860 100644
>>>> --- a/arch/x86/kernel/e820.c
>>>> +++ b/arch/x86/kernel/e820.c
>>>> @@ -1048,10 +1048,10 @@ static unsigned long __init e820_type_to_iores_desc(struct e820_entry *entry)
>>>>  	case E820_TYPE_NVS:		return IORES_DESC_ACPI_NV_STORAGE;
>>>>  	case E820_TYPE_PMEM:		return IORES_DESC_PERSISTENT_MEMORY;
>>>>  	case E820_TYPE_PRAM:		return IORES_DESC_PERSISTENT_MEMORY_LEGACY;
>>>> +	case E820_TYPE_RESERVED:	return IORES_DESC_RESERVED;
>>>>  	case E820_TYPE_RESERVED_KERN:	/* Fall-through: */
>>>>  	case E820_TYPE_RAM:		/* Fall-through: */
>>>>  	case E820_TYPE_UNUSABLE:	/* Fall-through: */
>>>> -	case E820_TYPE_RESERVED:	/* Fall-through: */
>>>>  	default:			return IORES_DESC_NONE;
>>>>  	}
>>>>  }
>>>> diff --git a/arch/x86/mm/ioremap.c b/arch/x86/mm/ioremap.c
>>>> index 5378d10f1d31..fea2ef99415d 100644
>>>> --- a/arch/x86/mm/ioremap.c
>>>> +++ b/arch/x86/mm/ioremap.c
>>>> @@ -83,7 +83,18 @@ static bool __ioremap_check_ram(struct resource *res)
>>>>  
>>>>  static int __ioremap_check_desc_other(struct resource *res)
>>>>  {
>>>> -	return (res->desc != IORES_DESC_NONE);
>>>> +	/*
>>>> +	 * But now, the 'E820_TYPE_RESERVED' type is converted to the new
>>>> +	 * descriptor 'IORES_DESC_RESERVED' instead of 'IORES_DESC_NONE',
>>>> +	 * it has been changed. And the value of 'mem_flags.desc_other'
>>>> +	 * is equal to 'true' if we don't strengthen the condition in this
>>>> +	 * function, that is wrong. Because originally it is equal to
>>>> +	 * 'false' for the same reserved type.
>>>> +	 *
>>>> +	 * So, that would be nice to keep it the same as before.
>>>> +	 */
>>>> +	return ((res->desc != IORES_DESC_NONE) &&
>>>> +		(res->desc != IORES_DESC_RESERVED));
>>>>  }
>>>
>>> Added Tom since he added the check function.  Is it possible to only
>>> check explict valid desc types instead of exclude IORES_DESC_NONE?
>>
>> Sorry for the delay...
>>
>> The original intent of the check was to map most memory as encrypted under
>> SEV if it was marked with a specific descriptor, since it was likely to
>> not be MMIO. I tried converting most things that mapped memory to memremap
>> vs ioremap, but ACPI was one area that I left alone and this check catches
>> the mapping of the ACPI tables. I suppose it's possible to change this to
>> check just for IORES_DESC_ACPI_* values, but I would have to do some
>> testing.
> 
> Recently, i tested it according to your advice, here it is really checking for the
> 'IORES_DESC_ACPI_*' values.  If you agree to this change, i would add the following
> patch into this patch set and post them again.
> 
> [root@localhost linux]# git diff arch/x86/mm/ioremap.c
> diff --git a/arch/x86/mm/ioremap.c b/arch/x86/mm/ioremap.c
> index 0029604af8a4..0e3ba620612d 100644
> --- a/arch/x86/mm/ioremap.c
> +++ b/arch/x86/mm/ioremap.c
> @@ -83,7 +83,8 @@ static bool __ioremap_check_ram(struct resource *res)
>  
>  static int __ioremap_check_desc_other(struct resource *res)
>  {
> -       return (res->desc != IORES_DESC_NONE);
> +       return ((res->desc == IORES_DESC_ACPI_TABLES) ||
> +               (res->desc == IORES_DESC_ACPI_NV_STORAGE));

I'm not a big fan of this. I think you should leave it as the previous
check you had for IORES_DESC_NONE and IORES_DESC_RESERVED. There's no
telling what type of resources may be mapped in the future where this
will break.

Adding a nice comment here about how IORES_DESC_NONE originally was to
identify MMIO and reserved areas. Now IORES_DESC_RESERVED has been created
for the reserved areas so the check needs to be expanded so that these
areas aren't mapped encrypted when using ioremap.

Thanks,
Tom

>  }
> 
> 
> Thanks.
> Lianbo
> 
>>
>> Thanks,
>> Tom
>>
>>>
>>>>  
>>>>  static int __ioremap_res_check(struct resource *res, void *arg)
>>>> diff --git a/include/linux/ioport.h b/include/linux/ioport.h
>>>> index da0ebaec25f0..6ed59de48bd5 100644
>>>> --- a/include/linux/ioport.h
>>>> +++ b/include/linux/ioport.h
>>>> @@ -133,6 +133,7 @@ enum {
>>>>  	IORES_DESC_PERSISTENT_MEMORY_LEGACY	= 5,
>>>>  	IORES_DESC_DEVICE_PRIVATE_MEMORY	= 6,
>>>>  	IORES_DESC_DEVICE_PUBLIC_MEMORY		= 7,
>>>> +	IORES_DESC_RESERVED			= 8,
>>>>  };
>>>>  
>>>>  /* helpers to define resources */
>>>> diff --git a/kernel/resource.c b/kernel/resource.c
>>>> index b0fbf685c77a..f34a632c4169 100644
>>>> --- a/kernel/resource.c
>>>> +++ b/kernel/resource.c
>>>> @@ -994,7 +994,7 @@ __reserve_region_with_split(struct resource *root, resource_size_t start,
>>>>  	res->start = start;
>>>>  	res->end = end;
>>>>  	res->flags = type | IORESOURCE_BUSY;
>>>> -	res->desc = IORES_DESC_NONE;
>>>> +	res->desc = IORES_DESC_RESERVED;
>>>>  
>>>>  	while (1) {
>>>>  
>>>> @@ -1029,7 +1029,7 @@ __reserve_region_with_split(struct resource *root, resource_size_t start,
>>>>  				next_res->start = conflict->end + 1;
>>>>  				next_res->end = end;
>>>>  				next_res->flags = type | IORESOURCE_BUSY;
>>>> -				next_res->desc = IORES_DESC_NONE;
>>>> +				next_res->desc = IORES_DESC_RESERVED;
>>>>  			}
>>>>  		} else {
>>>>  			res->start = conflict->end + 1;
>>>> @@ -1477,7 +1477,7 @@ static int __init reserve_setup(char *str)
>>>>  			res->start = io_start;
>>>>  			res->end = io_start + io_num - 1;
>>>>  			res->flags |= IORESOURCE_BUSY;
>>>> -			res->desc = IORES_DESC_NONE;
>>>> +			res->desc = IORES_DESC_RESERVED;
>>>>  			res->child = NULL;
>>>>  			if (request_resource(parent, res) == 0)
>>>>  				reserved = x+1;
>>>> -- 
>>>> 2.17.1
>>>>
>>>
>>>
>>> There are a lot of places call region_intersects which use DESC_NONE,
>>> I'm not sure if needed changes accordingly.  Cced Dan and Toshi.
>>>
>>>
>>> Thanks
>>> Dave
>>>
_______________________________________________
kexec mailing list
kexec@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/kexec

WARNING: multiple messages have this Message-ID (diff)
From: "Lendacky, Thomas" <Thomas.Lendacky@amd.com>
To: lijiang <lijiang@redhat.com>
Cc: Dave Young <dyoung@redhat.com>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	"kexec@lists.infradead.org" <kexec@lists.infradead.org>,
	"x86@kernel.org" <x86@kernel.org>,
	"linux-ia64@vger.kernel.org" <linux-ia64@vger.kernel.org>,
	"linux-efi@vger.kernel.org" <linux-efi@vger.kernel.org>,
	"tglx@linutronix.de" <tglx@linutronix.de>,
	"mingo@redhat.com" <mingo@redhat.com>,
	"bp@alien8.de" <bp@alien8.de>,
	"akpm@linux-foundation.org" <akpm@linux-foundation.org>,
	"dave.hansen@linux.intel.com" <dave.hansen@linux.intel.com>,
	"luto@kernel.org" <luto@kernel.org>,
	"peterz@infradead.org" <peterz@infradead.org>,
	"ard.biesheuvel@linaro.org" <ard.biesheuvel@linaro.org>,
	"tony.luck@intel.com" <tony.luck@intel.com>,
	"fenghua.yu@intel.com" <fenghua.yu@intel.com>
Subject: Re: [PATCH 1/2 v8] resource: add the new I/O resource descriptor 'IORES_DESC_RESERVED'
Date: Mon, 25 Mar 2019 19:34:25 +0000	[thread overview]
Message-ID: <b1556461-fe83-2ba0-00a3-e8ecf3e286fe@amd.com> (raw)
In-Reply-To: <95661569-d9c9-af13-11c4-c0d752710a1f@redhat.com>

On 3/16/19 2:31 AM, lijiang wrote:
> 
> 
> 在 2018年12月05日 05:33, Lendacky, Thomas 写道:
>> On 11/29/2018 09:37 PM, Dave Young wrote:
>>> + more people
>>>
>>> On 11/29/18 at 04:09pm, Lianbo Jiang wrote:
>>>> When doing kexec_file_load, the first kernel needs to pass the e820
>>>> reserved ranges to the second kernel. But kernel can not exactly
>>>> match the e820 reserved ranges when walking through the iomem resources
>>>> with the descriptor 'IORES_DESC_NONE', because several e820 types(
>>>> e.g. E820_TYPE_RESERVED_KERN/E820_TYPE_RAM/E820_TYPE_UNUSABLE/E820
>>>> _TYPE_RESERVED) are converted to the descriptor 'IORES_DESC_NONE'. It
>>>> may pass these four types to the kdump kernel, that is not desired result.
>>>>
>>>> So, this patch adds a new I/O resource descriptor 'IORES_DESC_RESERVED'
>>>> for the iomem resources search interfaces. It is helpful to exactly
>>>> match the reserved resource ranges when walking through iomem resources.
>>>>
>>>> In addition, since the new descriptor 'IORES_DESC_RESERVED' is introduced,
>>>> these code originally related to the descriptor 'IORES_DESC_NONE' need to
>>>> be updated. Otherwise, it will be easily confused and also cause some
>>>> errors. Because the 'E820_TYPE_RESERVED' type is converted to the new
>>>> descriptor 'IORES_DESC_RESERVED' instead of 'IORES_DESC_NONE', it has been
>>>> changed.
>>>>
>>>> Suggested-by: Dave Young <dyoung@redhat.com>
>>>> Signed-off-by: Lianbo Jiang <lijiang@redhat.com>
>>>> ---
>>>>  arch/ia64/kernel/efi.c |  4 ++++
>>>>  arch/x86/kernel/e820.c |  2 +-
>>>>  arch/x86/mm/ioremap.c  | 13 ++++++++++++-
>>>>  include/linux/ioport.h |  1 +
>>>>  kernel/resource.c      |  6 +++---
>>>>  5 files changed, 21 insertions(+), 5 deletions(-)
>>>>
>>>> diff --git a/arch/ia64/kernel/efi.c b/arch/ia64/kernel/efi.c
>>>> index 8f106638913c..1841e9b4db30 100644
>>>> --- a/arch/ia64/kernel/efi.c
>>>> +++ b/arch/ia64/kernel/efi.c
>>>> @@ -1231,6 +1231,10 @@ efi_initialize_iomem_resources(struct resource *code_resource,
>>>>  				break;
>>>>  
>>>>  			case EFI_RESERVED_TYPE:
>>>> +				name = "reserved";
>>>
>>> Ingo updated X86 code to use "Reserved",  I think it would be good to do
>>> same for this case as well
>>>
>>>> +				desc = IORES_DESC_RESERVED;
>>>> +				break;
>>>> +
>>>>  			case EFI_RUNTIME_SERVICES_CODE:
>>>>  			case EFI_RUNTIME_SERVICES_DATA:
>>>>  			case EFI_ACPI_RECLAIM_MEMORY:
>>>
>>> Originally, above 3 are all "reserved", so probably they all should be
>>> IORES_DESC_RESERVED.
>>>
>>> Can any IA64 people to review this?
>>>
>>>> diff --git a/arch/x86/kernel/e820.c b/arch/x86/kernel/e820.c
>>>> index 50895c2f937d..57fafdafb860 100644
>>>> --- a/arch/x86/kernel/e820.c
>>>> +++ b/arch/x86/kernel/e820.c
>>>> @@ -1048,10 +1048,10 @@ static unsigned long __init e820_type_to_iores_desc(struct e820_entry *entry)
>>>>  	case E820_TYPE_NVS:		return IORES_DESC_ACPI_NV_STORAGE;
>>>>  	case E820_TYPE_PMEM:		return IORES_DESC_PERSISTENT_MEMORY;
>>>>  	case E820_TYPE_PRAM:		return IORES_DESC_PERSISTENT_MEMORY_LEGACY;
>>>> +	case E820_TYPE_RESERVED:	return IORES_DESC_RESERVED;
>>>>  	case E820_TYPE_RESERVED_KERN:	/* Fall-through: */
>>>>  	case E820_TYPE_RAM:		/* Fall-through: */
>>>>  	case E820_TYPE_UNUSABLE:	/* Fall-through: */
>>>> -	case E820_TYPE_RESERVED:	/* Fall-through: */
>>>>  	default:			return IORES_DESC_NONE;
>>>>  	}
>>>>  }
>>>> diff --git a/arch/x86/mm/ioremap.c b/arch/x86/mm/ioremap.c
>>>> index 5378d10f1d31..fea2ef99415d 100644
>>>> --- a/arch/x86/mm/ioremap.c
>>>> +++ b/arch/x86/mm/ioremap.c
>>>> @@ -83,7 +83,18 @@ static bool __ioremap_check_ram(struct resource *res)
>>>>  
>>>>  static int __ioremap_check_desc_other(struct resource *res)
>>>>  {
>>>> -	return (res->desc != IORES_DESC_NONE);
>>>> +	/*
>>>> +	 * But now, the 'E820_TYPE_RESERVED' type is converted to the new
>>>> +	 * descriptor 'IORES_DESC_RESERVED' instead of 'IORES_DESC_NONE',
>>>> +	 * it has been changed. And the value of 'mem_flags.desc_other'
>>>> +	 * is equal to 'true' if we don't strengthen the condition in this
>>>> +	 * function, that is wrong. Because originally it is equal to
>>>> +	 * 'false' for the same reserved type.
>>>> +	 *
>>>> +	 * So, that would be nice to keep it the same as before.
>>>> +	 */
>>>> +	return ((res->desc != IORES_DESC_NONE) &&
>>>> +		(res->desc != IORES_DESC_RESERVED));
>>>>  }
>>>
>>> Added Tom since he added the check function.  Is it possible to only
>>> check explict valid desc types instead of exclude IORES_DESC_NONE?
>>
>> Sorry for the delay...
>>
>> The original intent of the check was to map most memory as encrypted under
>> SEV if it was marked with a specific descriptor, since it was likely to
>> not be MMIO. I tried converting most things that mapped memory to memremap
>> vs ioremap, but ACPI was one area that I left alone and this check catches
>> the mapping of the ACPI tables. I suppose it's possible to change this to
>> check just for IORES_DESC_ACPI_* values, but I would have to do some
>> testing.
> 
> Recently, i tested it according to your advice, here it is really checking for the
> 'IORES_DESC_ACPI_*' values.  If you agree to this change, i would add the following
> patch into this patch set and post them again.
> 
> [root@localhost linux]# git diff arch/x86/mm/ioremap.c
> diff --git a/arch/x86/mm/ioremap.c b/arch/x86/mm/ioremap.c
> index 0029604af8a4..0e3ba620612d 100644
> --- a/arch/x86/mm/ioremap.c
> +++ b/arch/x86/mm/ioremap.c
> @@ -83,7 +83,8 @@ static bool __ioremap_check_ram(struct resource *res)
>  
>  static int __ioremap_check_desc_other(struct resource *res)
>  {
> -       return (res->desc != IORES_DESC_NONE);
> +       return ((res->desc == IORES_DESC_ACPI_TABLES) ||
> +               (res->desc == IORES_DESC_ACPI_NV_STORAGE));

I'm not a big fan of this. I think you should leave it as the previous
check you had for IORES_DESC_NONE and IORES_DESC_RESERVED. There's no
telling what type of resources may be mapped in the future where this
will break.

Adding a nice comment here about how IORES_DESC_NONE originally was to
identify MMIO and reserved areas. Now IORES_DESC_RESERVED has been created
for the reserved areas so the check needs to be expanded so that these
areas aren't mapped encrypted when using ioremap.

Thanks,
Tom

>  }
> 
> 
> Thanks.
> Lianbo
> 
>>
>> Thanks,
>> Tom
>>
>>>
>>>>  
>>>>  static int __ioremap_res_check(struct resource *res, void *arg)
>>>> diff --git a/include/linux/ioport.h b/include/linux/ioport.h
>>>> index da0ebaec25f0..6ed59de48bd5 100644
>>>> --- a/include/linux/ioport.h
>>>> +++ b/include/linux/ioport.h
>>>> @@ -133,6 +133,7 @@ enum {
>>>>  	IORES_DESC_PERSISTENT_MEMORY_LEGACY	= 5,
>>>>  	IORES_DESC_DEVICE_PRIVATE_MEMORY	= 6,
>>>>  	IORES_DESC_DEVICE_PUBLIC_MEMORY		= 7,
>>>> +	IORES_DESC_RESERVED			= 8,
>>>>  };
>>>>  
>>>>  /* helpers to define resources */
>>>> diff --git a/kernel/resource.c b/kernel/resource.c
>>>> index b0fbf685c77a..f34a632c4169 100644
>>>> --- a/kernel/resource.c
>>>> +++ b/kernel/resource.c
>>>> @@ -994,7 +994,7 @@ __reserve_region_with_split(struct resource *root, resource_size_t start,
>>>>  	res->start = start;
>>>>  	res->end = end;
>>>>  	res->flags = type | IORESOURCE_BUSY;
>>>> -	res->desc = IORES_DESC_NONE;
>>>> +	res->desc = IORES_DESC_RESERVED;
>>>>  
>>>>  	while (1) {
>>>>  
>>>> @@ -1029,7 +1029,7 @@ __reserve_region_with_split(struct resource *root, resource_size_t start,
>>>>  				next_res->start = conflict->end + 1;
>>>>  				next_res->end = end;
>>>>  				next_res->flags = type | IORESOURCE_BUSY;
>>>> -				next_res->desc = IORES_DESC_NONE;
>>>> +				next_res->desc = IORES_DESC_RESERVED;
>>>>  			}
>>>>  		} else {
>>>>  			res->start = conflict->end + 1;
>>>> @@ -1477,7 +1477,7 @@ static int __init reserve_setup(char *str)
>>>>  			res->start = io_start;
>>>>  			res->end = io_start + io_num - 1;
>>>>  			res->flags |= IORESOURCE_BUSY;
>>>> -			res->desc = IORES_DESC_NONE;
>>>> +			res->desc = IORES_DESC_RESERVED;
>>>>  			res->child = NULL;
>>>>  			if (request_resource(parent, res) == 0)
>>>>  				reserved = x+1;
>>>> -- 
>>>> 2.17.1
>>>>
>>>
>>>
>>> There are a lot of places call region_intersects which use DESC_NONE,
>>> I'm not sure if needed changes accordingly.  Cced Dan and Toshi.
>>>
>>>
>>> Thanks
>>> Dave
>>>

WARNING: multiple messages have this Message-ID (diff)
From: "Lendacky, Thomas" <Thomas.Lendacky@amd.com>
To: lijiang <lijiang@redhat.com>
Cc: Dave Young <dyoung@redhat.com>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	"kexec@lists.infradead.org" <kexec@lists.infradead.org>,
	"x86@kernel.org" <x86@kernel.org>,
	"linux-ia64@vger.kernel.org" <linux-ia64@vger.kernel.org>,
	"linux-efi@vger.kernel.org" <linux-efi@vger.kernel.org>,
	"tglx@linutronix.de" <tglx@linutronix.de>,
	"mingo@redhat.com" <mingo@redhat.com>,
	"bp@alien8.de" <bp@alien8.de>,
	"akpm@linux-foundation.org" <akpm@linux-foundation.org>,
	"dave.hansen@linux.intel.com" <dave.hansen@linux.intel.com>,
	"luto@kernel.org" <luto@kernel.org>,
	"peterz@infradead.org" <peterz@infradead.org>,
	"ard.biesheuvel@linaro.org" <ard.biesheuvel@linaro.org>,
	"tony.luck@intel.com" <tony.luck@intel.com>,
	"fenghua.yu@intel.com" <fenghua.yu@intel.com>,
	"bhe@redhat.com" <bhe@redhat.com>, Toshi Kani <toshi.kani@hp.com>,
	Dan Williams <dan.j.williams@intel.com>
Subject: Re: [PATCH 1/2 v8] resource: add the new I/O resource descriptor 'IORES_DESC_RESERVED'
Date: Mon, 25 Mar 2019 19:34:25 +0000	[thread overview]
Message-ID: <b1556461-fe83-2ba0-00a3-e8ecf3e286fe@amd.com> (raw)
In-Reply-To: <95661569-d9c9-af13-11c4-c0d752710a1f@redhat.com>

T24gMy8xNi8xOSAyOjMxIEFNLCBsaWppYW5nIHdyb3RlOg0KPiANCj4gDQo+IOWcqCAyMDE45bm0
MTLmnIgwNeaXpSAwNTozMywgTGVuZGFja3ksIFRob21hcyDlhpnpgZM6DQo+PiBPbiAxMS8yOS8y
MDE4IDA5OjM3IFBNLCBEYXZlIFlvdW5nIHdyb3RlOg0KPj4+ICsgbW9yZSBwZW9wbGUNCj4+Pg0K
Pj4+IE9uIDExLzI5LzE4IGF0IDA0OjA5cG0sIExpYW5ibyBKaWFuZyB3cm90ZToNCj4+Pj4gV2hl
biBkb2luZyBrZXhlY19maWxlX2xvYWQsIHRoZSBmaXJzdCBrZXJuZWwgbmVlZHMgdG8gcGFzcyB0
aGUgZTgyMA0KPj4+PiByZXNlcnZlZCByYW5nZXMgdG8gdGhlIHNlY29uZCBrZXJuZWwuIEJ1dCBr
ZXJuZWwgY2FuIG5vdCBleGFjdGx5DQo+Pj4+IG1hdGNoIHRoZSBlODIwIHJlc2VydmVkIHJhbmdl
cyB3aGVuIHdhbGtpbmcgdGhyb3VnaCB0aGUgaW9tZW0gcmVzb3VyY2VzDQo+Pj4+IHdpdGggdGhl
IGRlc2NyaXB0b3IgJ0lPUkVTX0RFU0NfTk9ORScsIGJlY2F1c2Ugc2V2ZXJhbCBlODIwIHR5cGVz
KA0KPj4+PiBlLmcuIEU4MjBfVFlQRV9SRVNFUlZFRF9LRVJOL0U4MjBfVFlQRV9SQU0vRTgyMF9U
WVBFX1VOVVNBQkxFL0U4MjANCj4+Pj4gX1RZUEVfUkVTRVJWRUQpIGFyZSBjb252ZXJ0ZWQgdG8g
dGhlIGRlc2NyaXB0b3IgJ0lPUkVTX0RFU0NfTk9ORScuIEl0DQo+Pj4+IG1heSBwYXNzIHRoZXNl
IGZvdXIgdHlwZXMgdG8gdGhlIGtkdW1wIGtlcm5lbCwgdGhhdCBpcyBub3QgZGVzaXJlZCByZXN1
bHQuDQo+Pj4+DQo+Pj4+IFNvLCB0aGlzIHBhdGNoIGFkZHMgYSBuZXcgSS9PIHJlc291cmNlIGRl
c2NyaXB0b3IgJ0lPUkVTX0RFU0NfUkVTRVJWRUQnDQo+Pj4+IGZvciB0aGUgaW9tZW0gcmVzb3Vy
Y2VzIHNlYXJjaCBpbnRlcmZhY2VzLiBJdCBpcyBoZWxwZnVsIHRvIGV4YWN0bHkNCj4+Pj4gbWF0
Y2ggdGhlIHJlc2VydmVkIHJlc291cmNlIHJhbmdlcyB3aGVuIHdhbGtpbmcgdGhyb3VnaCBpb21l
bSByZXNvdXJjZXMuDQo+Pj4+DQo+Pj4+IEluIGFkZGl0aW9uLCBzaW5jZSB0aGUgbmV3IGRlc2Ny
aXB0b3IgJ0lPUkVTX0RFU0NfUkVTRVJWRUQnIGlzIGludHJvZHVjZWQsDQo+Pj4+IHRoZXNlIGNv
ZGUgb3JpZ2luYWxseSByZWxhdGVkIHRvIHRoZSBkZXNjcmlwdG9yICdJT1JFU19ERVNDX05PTkUn
IG5lZWQgdG8NCj4+Pj4gYmUgdXBkYXRlZC4gT3RoZXJ3aXNlLCBpdCB3aWxsIGJlIGVhc2lseSBj
b25mdXNlZCBhbmQgYWxzbyBjYXVzZSBzb21lDQo+Pj4+IGVycm9ycy4gQmVjYXVzZSB0aGUgJ0U4
MjBfVFlQRV9SRVNFUlZFRCcgdHlwZSBpcyBjb252ZXJ0ZWQgdG8gdGhlIG5ldw0KPj4+PiBkZXNj
cmlwdG9yICdJT1JFU19ERVNDX1JFU0VSVkVEJyBpbnN0ZWFkIG9mICdJT1JFU19ERVNDX05PTkUn
LCBpdCBoYXMgYmVlbg0KPj4+PiBjaGFuZ2VkLg0KPj4+Pg0KPj4+PiBTdWdnZXN0ZWQtYnk6IERh
dmUgWW91bmcgPGR5b3VuZ0ByZWRoYXQuY29tPg0KPj4+PiBTaWduZWQtb2ZmLWJ5OiBMaWFuYm8g
SmlhbmcgPGxpamlhbmdAcmVkaGF0LmNvbT4NCj4+Pj4gLS0tDQo+Pj4+ICBhcmNoL2lhNjQva2Vy
bmVsL2VmaS5jIHwgIDQgKysrKw0KPj4+PiAgYXJjaC94ODYva2VybmVsL2U4MjAuYyB8ICAyICst
DQo+Pj4+ICBhcmNoL3g4Ni9tbS9pb3JlbWFwLmMgIHwgMTMgKysrKysrKysrKysrLQ0KPj4+PiAg
aW5jbHVkZS9saW51eC9pb3BvcnQuaCB8ICAxICsNCj4+Pj4gIGtlcm5lbC9yZXNvdXJjZS5jICAg
ICAgfCAgNiArKystLS0NCj4+Pj4gIDUgZmlsZXMgY2hhbmdlZCwgMjEgaW5zZXJ0aW9ucygrKSwg
NSBkZWxldGlvbnMoLSkNCj4+Pj4NCj4+Pj4gZGlmZiAtLWdpdCBhL2FyY2gvaWE2NC9rZXJuZWwv
ZWZpLmMgYi9hcmNoL2lhNjQva2VybmVsL2VmaS5jDQo+Pj4+IGluZGV4IDhmMTA2NjM4OTEzYy4u
MTg0MWU5YjRkYjMwIDEwMDY0NA0KPj4+PiAtLS0gYS9hcmNoL2lhNjQva2VybmVsL2VmaS5jDQo+
Pj4+ICsrKyBiL2FyY2gvaWE2NC9rZXJuZWwvZWZpLmMNCj4+Pj4gQEAgLTEyMzEsNiArMTIzMSwx
MCBAQCBlZmlfaW5pdGlhbGl6ZV9pb21lbV9yZXNvdXJjZXMoc3RydWN0IHJlc291cmNlICpjb2Rl
X3Jlc291cmNlLA0KPj4+PiAgCQkJCWJyZWFrOw0KPj4+PiAgDQo+Pj4+ICAJCQljYXNlIEVGSV9S
RVNFUlZFRF9UWVBFOg0KPj4+PiArCQkJCW5hbWUgPSAicmVzZXJ2ZWQiOw0KPj4+DQo+Pj4gSW5n
byB1cGRhdGVkIFg4NiBjb2RlIHRvIHVzZSAiUmVzZXJ2ZWQiLCAgSSB0aGluayBpdCB3b3VsZCBi
ZSBnb29kIHRvIGRvDQo+Pj4gc2FtZSBmb3IgdGhpcyBjYXNlIGFzIHdlbGwNCj4+Pg0KPj4+PiAr
CQkJCWRlc2MgPSBJT1JFU19ERVNDX1JFU0VSVkVEOw0KPj4+PiArCQkJCWJyZWFrOw0KPj4+PiAr
DQo+Pj4+ICAJCQljYXNlIEVGSV9SVU5USU1FX1NFUlZJQ0VTX0NPREU6DQo+Pj4+ICAJCQljYXNl
IEVGSV9SVU5USU1FX1NFUlZJQ0VTX0RBVEE6DQo+Pj4+ICAJCQljYXNlIEVGSV9BQ1BJX1JFQ0xB
SU1fTUVNT1JZOg0KPj4+DQo+Pj4gT3JpZ2luYWxseSwgYWJvdmUgMyBhcmUgYWxsICJyZXNlcnZl
ZCIsIHNvIHByb2JhYmx5IHRoZXkgYWxsIHNob3VsZCBiZQ0KPj4+IElPUkVTX0RFU0NfUkVTRVJW
RUQuDQo+Pj4NCj4+PiBDYW4gYW55IElBNjQgcGVvcGxlIHRvIHJldmlldyB0aGlzPw0KPj4+DQo+
Pj4+IGRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rZXJuZWwvZTgyMC5jIGIvYXJjaC94ODYva2VybmVs
L2U4MjAuYw0KPj4+PiBpbmRleCA1MDg5NWMyZjkzN2QuLjU3ZmFmZGFmYjg2MCAxMDA2NDQNCj4+
Pj4gLS0tIGEvYXJjaC94ODYva2VybmVsL2U4MjAuYw0KPj4+PiArKysgYi9hcmNoL3g4Ni9rZXJu
ZWwvZTgyMC5jDQo+Pj4+IEBAIC0xMDQ4LDEwICsxMDQ4LDEwIEBAIHN0YXRpYyB1bnNpZ25lZCBs
b25nIF9faW5pdCBlODIwX3R5cGVfdG9faW9yZXNfZGVzYyhzdHJ1Y3QgZTgyMF9lbnRyeSAqZW50
cnkpDQo+Pj4+ICAJY2FzZSBFODIwX1RZUEVfTlZTOgkJcmV0dXJuIElPUkVTX0RFU0NfQUNQSV9O
Vl9TVE9SQUdFOw0KPj4+PiAgCWNhc2UgRTgyMF9UWVBFX1BNRU06CQlyZXR1cm4gSU9SRVNfREVT
Q19QRVJTSVNURU5UX01FTU9SWTsNCj4+Pj4gIAljYXNlIEU4MjBfVFlQRV9QUkFNOgkJcmV0dXJu
IElPUkVTX0RFU0NfUEVSU0lTVEVOVF9NRU1PUllfTEVHQUNZOw0KPj4+PiArCWNhc2UgRTgyMF9U
WVBFX1JFU0VSVkVEOglyZXR1cm4gSU9SRVNfREVTQ19SRVNFUlZFRDsNCj4+Pj4gIAljYXNlIEU4
MjBfVFlQRV9SRVNFUlZFRF9LRVJOOgkvKiBGYWxsLXRocm91Z2g6ICovDQo+Pj4+ICAJY2FzZSBF
ODIwX1RZUEVfUkFNOgkJLyogRmFsbC10aHJvdWdoOiAqLw0KPj4+PiAgCWNhc2UgRTgyMF9UWVBF
X1VOVVNBQkxFOgkvKiBGYWxsLXRocm91Z2g6ICovDQo+Pj4+IC0JY2FzZSBFODIwX1RZUEVfUkVT
RVJWRUQ6CS8qIEZhbGwtdGhyb3VnaDogKi8NCj4+Pj4gIAlkZWZhdWx0OgkJCXJldHVybiBJT1JF
U19ERVNDX05PTkU7DQo+Pj4+ICAJfQ0KPj4+PiAgfQ0KPj4+PiBkaWZmIC0tZ2l0IGEvYXJjaC94
ODYvbW0vaW9yZW1hcC5jIGIvYXJjaC94ODYvbW0vaW9yZW1hcC5jDQo+Pj4+IGluZGV4IDUzNzhk
MTBmMWQzMS4uZmVhMmVmOTk0MTVkIDEwMDY0NA0KPj4+PiAtLS0gYS9hcmNoL3g4Ni9tbS9pb3Jl
bWFwLmMNCj4+Pj4gKysrIGIvYXJjaC94ODYvbW0vaW9yZW1hcC5jDQo+Pj4+IEBAIC04Myw3ICs4
MywxOCBAQCBzdGF0aWMgYm9vbCBfX2lvcmVtYXBfY2hlY2tfcmFtKHN0cnVjdCByZXNvdXJjZSAq
cmVzKQ0KPj4+PiAgDQo+Pj4+ICBzdGF0aWMgaW50IF9faW9yZW1hcF9jaGVja19kZXNjX290aGVy
KHN0cnVjdCByZXNvdXJjZSAqcmVzKQ0KPj4+PiAgew0KPj4+PiAtCXJldHVybiAocmVzLT5kZXNj
ICE9IElPUkVTX0RFU0NfTk9ORSk7DQo+Pj4+ICsJLyoNCj4+Pj4gKwkgKiBCdXQgbm93LCB0aGUg
J0U4MjBfVFlQRV9SRVNFUlZFRCcgdHlwZSBpcyBjb252ZXJ0ZWQgdG8gdGhlIG5ldw0KPj4+PiAr
CSAqIGRlc2NyaXB0b3IgJ0lPUkVTX0RFU0NfUkVTRVJWRUQnIGluc3RlYWQgb2YgJ0lPUkVTX0RF
U0NfTk9ORScsDQo+Pj4+ICsJICogaXQgaGFzIGJlZW4gY2hhbmdlZC4gQW5kIHRoZSB2YWx1ZSBv
ZiAnbWVtX2ZsYWdzLmRlc2Nfb3RoZXInDQo+Pj4+ICsJICogaXMgZXF1YWwgdG8gJ3RydWUnIGlm
IHdlIGRvbid0IHN0cmVuZ3RoZW4gdGhlIGNvbmRpdGlvbiBpbiB0aGlzDQo+Pj4+ICsJICogZnVu
Y3Rpb24sIHRoYXQgaXMgd3JvbmcuIEJlY2F1c2Ugb3JpZ2luYWxseSBpdCBpcyBlcXVhbCB0bw0K
Pj4+PiArCSAqICdmYWxzZScgZm9yIHRoZSBzYW1lIHJlc2VydmVkIHR5cGUuDQo+Pj4+ICsJICoN
Cj4+Pj4gKwkgKiBTbywgdGhhdCB3b3VsZCBiZSBuaWNlIHRvIGtlZXAgaXQgdGhlIHNhbWUgYXMg
YmVmb3JlLg0KPj4+PiArCSAqLw0KPj4+PiArCXJldHVybiAoKHJlcy0+ZGVzYyAhPSBJT1JFU19E
RVNDX05PTkUpICYmDQo+Pj4+ICsJCShyZXMtPmRlc2MgIT0gSU9SRVNfREVTQ19SRVNFUlZFRCkp
Ow0KPj4+PiAgfQ0KPj4+DQo+Pj4gQWRkZWQgVG9tIHNpbmNlIGhlIGFkZGVkIHRoZSBjaGVjayBm
dW5jdGlvbi4gIElzIGl0IHBvc3NpYmxlIHRvIG9ubHkNCj4+PiBjaGVjayBleHBsaWN0IHZhbGlk
IGRlc2MgdHlwZXMgaW5zdGVhZCBvZiBleGNsdWRlIElPUkVTX0RFU0NfTk9ORT8NCj4+DQo+PiBT
b3JyeSBmb3IgdGhlIGRlbGF5Li4uDQo+Pg0KPj4gVGhlIG9yaWdpbmFsIGludGVudCBvZiB0aGUg
Y2hlY2sgd2FzIHRvIG1hcCBtb3N0IG1lbW9yeSBhcyBlbmNyeXB0ZWQgdW5kZXINCj4+IFNFViBp
ZiBpdCB3YXMgbWFya2VkIHdpdGggYSBzcGVjaWZpYyBkZXNjcmlwdG9yLCBzaW5jZSBpdCB3YXMg
bGlrZWx5IHRvDQo+PiBub3QgYmUgTU1JTy4gSSB0cmllZCBjb252ZXJ0aW5nIG1vc3QgdGhpbmdz
IHRoYXQgbWFwcGVkIG1lbW9yeSB0byBtZW1yZW1hcA0KPj4gdnMgaW9yZW1hcCwgYnV0IEFDUEkg
d2FzIG9uZSBhcmVhIHRoYXQgSSBsZWZ0IGFsb25lIGFuZCB0aGlzIGNoZWNrIGNhdGNoZXMNCj4+
IHRoZSBtYXBwaW5nIG9mIHRoZSBBQ1BJIHRhYmxlcy4gSSBzdXBwb3NlIGl0J3MgcG9zc2libGUg
dG8gY2hhbmdlIHRoaXMgdG8NCj4+IGNoZWNrIGp1c3QgZm9yIElPUkVTX0RFU0NfQUNQSV8qIHZh
bHVlcywgYnV0IEkgd291bGQgaGF2ZSB0byBkbyBzb21lDQo+PiB0ZXN0aW5nLg0KPiANCj4gUmVj
ZW50bHksIGkgdGVzdGVkIGl0IGFjY29yZGluZyB0byB5b3VyIGFkdmljZSwgaGVyZSBpdCBpcyBy
ZWFsbHkgY2hlY2tpbmcgZm9yIHRoZQ0KPiAnSU9SRVNfREVTQ19BQ1BJXyonIHZhbHVlcy4gIElm
IHlvdSBhZ3JlZSB0byB0aGlzIGNoYW5nZSwgaSB3b3VsZCBhZGQgdGhlIGZvbGxvd2luZw0KPiBw
YXRjaCBpbnRvIHRoaXMgcGF0Y2ggc2V0IGFuZCBwb3N0IHRoZW0gYWdhaW4uDQo+IA0KPiBbcm9v
dEBsb2NhbGhvc3QgbGludXhdIyBnaXQgZGlmZiBhcmNoL3g4Ni9tbS9pb3JlbWFwLmMNCj4gZGlm
ZiAtLWdpdCBhL2FyY2gveDg2L21tL2lvcmVtYXAuYyBiL2FyY2gveDg2L21tL2lvcmVtYXAuYw0K
PiBpbmRleCAwMDI5NjA0YWY4YTQuLjBlM2JhNjIwNjEyZCAxMDA2NDQNCj4gLS0tIGEvYXJjaC94
ODYvbW0vaW9yZW1hcC5jDQo+ICsrKyBiL2FyY2gveDg2L21tL2lvcmVtYXAuYw0KPiBAQCAtODMs
NyArODMsOCBAQCBzdGF0aWMgYm9vbCBfX2lvcmVtYXBfY2hlY2tfcmFtKHN0cnVjdCByZXNvdXJj
ZSAqcmVzKQ0KPiAgDQo+ICBzdGF0aWMgaW50IF9faW9yZW1hcF9jaGVja19kZXNjX290aGVyKHN0
cnVjdCByZXNvdXJjZSAqcmVzKQ0KPiAgew0KPiAtICAgICAgIHJldHVybiAocmVzLT5kZXNjICE9
IElPUkVTX0RFU0NfTk9ORSk7DQo+ICsgICAgICAgcmV0dXJuICgocmVzLT5kZXNjID09IElPUkVT
X0RFU0NfQUNQSV9UQUJMRVMpIHx8DQo+ICsgICAgICAgICAgICAgICAocmVzLT5kZXNjID09IElP
UkVTX0RFU0NfQUNQSV9OVl9TVE9SQUdFKSk7DQoNCkknbSBub3QgYSBiaWcgZmFuIG9mIHRoaXMu
IEkgdGhpbmsgeW91IHNob3VsZCBsZWF2ZSBpdCBhcyB0aGUgcHJldmlvdXMNCmNoZWNrIHlvdSBo
YWQgZm9yIElPUkVTX0RFU0NfTk9ORSBhbmQgSU9SRVNfREVTQ19SRVNFUlZFRC4gVGhlcmUncyBu
bw0KdGVsbGluZyB3aGF0IHR5cGUgb2YgcmVzb3VyY2VzIG1heSBiZSBtYXBwZWQgaW4gdGhlIGZ1
dHVyZSB3aGVyZSB0aGlzDQp3aWxsIGJyZWFrLg0KDQpBZGRpbmcgYSBuaWNlIGNvbW1lbnQgaGVy
ZSBhYm91dCBob3cgSU9SRVNfREVTQ19OT05FIG9yaWdpbmFsbHkgd2FzIHRvDQppZGVudGlmeSBN
TUlPIGFuZCByZXNlcnZlZCBhcmVhcy4gTm93IElPUkVTX0RFU0NfUkVTRVJWRUQgaGFzIGJlZW4g
Y3JlYXRlZA0KZm9yIHRoZSByZXNlcnZlZCBhcmVhcyBzbyB0aGUgY2hlY2sgbmVlZHMgdG8gYmUg
ZXhwYW5kZWQgc28gdGhhdCB0aGVzZQ0KYXJlYXMgYXJlbid0IG1hcHBlZCBlbmNyeXB0ZWQgd2hl
biB1c2luZyBpb3JlbWFwLg0KDQpUaGFua3MsDQpUb20NCg0KPiAgfQ0KPiANCj4gDQo+IFRoYW5r
cy4NCj4gTGlhbmJvDQo+IA0KPj4NCj4+IFRoYW5rcywNCj4+IFRvbQ0KPj4NCj4+Pg0KPj4+PiAg
DQo+Pj4+ICBzdGF0aWMgaW50IF9faW9yZW1hcF9yZXNfY2hlY2soc3RydWN0IHJlc291cmNlICpy
ZXMsIHZvaWQgKmFyZykNCj4+Pj4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvaW9wb3J0Lmgg
Yi9pbmNsdWRlL2xpbnV4L2lvcG9ydC5oDQo+Pj4+IGluZGV4IGRhMGViYWVjMjVmMC4uNmVkNTlk
ZTQ4YmQ1IDEwMDY0NA0KPj4+PiAtLS0gYS9pbmNsdWRlL2xpbnV4L2lvcG9ydC5oDQo+Pj4+ICsr
KyBiL2luY2x1ZGUvbGludXgvaW9wb3J0LmgNCj4+Pj4gQEAgLTEzMyw2ICsxMzMsNyBAQCBlbnVt
IHsNCj4+Pj4gIAlJT1JFU19ERVNDX1BFUlNJU1RFTlRfTUVNT1JZX0xFR0FDWQk9IDUsDQo+Pj4+
ICAJSU9SRVNfREVTQ19ERVZJQ0VfUFJJVkFURV9NRU1PUlkJPSA2LA0KPj4+PiAgCUlPUkVTX0RF
U0NfREVWSUNFX1BVQkxJQ19NRU1PUlkJCT0gNywNCj4+Pj4gKwlJT1JFU19ERVNDX1JFU0VSVkVE
CQkJPSA4LA0KPj4+PiAgfTsNCj4+Pj4gIA0KPj4+PiAgLyogaGVscGVycyB0byBkZWZpbmUgcmVz
b3VyY2VzICovDQo+Pj4+IGRpZmYgLS1naXQgYS9rZXJuZWwvcmVzb3VyY2UuYyBiL2tlcm5lbC9y
ZXNvdXJjZS5jDQo+Pj4+IGluZGV4IGIwZmJmNjg1Yzc3YS4uZjM0YTYzMmM0MTY5IDEwMDY0NA0K
Pj4+PiAtLS0gYS9rZXJuZWwvcmVzb3VyY2UuYw0KPj4+PiArKysgYi9rZXJuZWwvcmVzb3VyY2Uu
Yw0KPj4+PiBAQCAtOTk0LDcgKzk5NCw3IEBAIF9fcmVzZXJ2ZV9yZWdpb25fd2l0aF9zcGxpdChz
dHJ1Y3QgcmVzb3VyY2UgKnJvb3QsIHJlc291cmNlX3NpemVfdCBzdGFydCwNCj4+Pj4gIAlyZXMt
PnN0YXJ0ID0gc3RhcnQ7DQo+Pj4+ICAJcmVzLT5lbmQgPSBlbmQ7DQo+Pj4+ICAJcmVzLT5mbGFn
cyA9IHR5cGUgfCBJT1JFU09VUkNFX0JVU1k7DQo+Pj4+IC0JcmVzLT5kZXNjID0gSU9SRVNfREVT
Q19OT05FOw0KPj4+PiArCXJlcy0+ZGVzYyA9IElPUkVTX0RFU0NfUkVTRVJWRUQ7DQo+Pj4+ICAN
Cj4+Pj4gIAl3aGlsZSAoMSkgew0KPj4+PiAgDQo+Pj4+IEBAIC0xMDI5LDcgKzEwMjksNyBAQCBf
X3Jlc2VydmVfcmVnaW9uX3dpdGhfc3BsaXQoc3RydWN0IHJlc291cmNlICpyb290LCByZXNvdXJj
ZV9zaXplX3Qgc3RhcnQsDQo+Pj4+ICAJCQkJbmV4dF9yZXMtPnN0YXJ0ID0gY29uZmxpY3QtPmVu
ZCArIDE7DQo+Pj4+ICAJCQkJbmV4dF9yZXMtPmVuZCA9IGVuZDsNCj4+Pj4gIAkJCQluZXh0X3Jl
cy0+ZmxhZ3MgPSB0eXBlIHwgSU9SRVNPVVJDRV9CVVNZOw0KPj4+PiAtCQkJCW5leHRfcmVzLT5k
ZXNjID0gSU9SRVNfREVTQ19OT05FOw0KPj4+PiArCQkJCW5leHRfcmVzLT5kZXNjID0gSU9SRVNf
REVTQ19SRVNFUlZFRDsNCj4+Pj4gIAkJCX0NCj4+Pj4gIAkJfSBlbHNlIHsNCj4+Pj4gIAkJCXJl
cy0+c3RhcnQgPSBjb25mbGljdC0+ZW5kICsgMTsNCj4+Pj4gQEAgLTE0NzcsNyArMTQ3Nyw3IEBA
IHN0YXRpYyBpbnQgX19pbml0IHJlc2VydmVfc2V0dXAoY2hhciAqc3RyKQ0KPj4+PiAgCQkJcmVz
LT5zdGFydCA9IGlvX3N0YXJ0Ow0KPj4+PiAgCQkJcmVzLT5lbmQgPSBpb19zdGFydCArIGlvX251
bSAtIDE7DQo+Pj4+ICAJCQlyZXMtPmZsYWdzIHw9IElPUkVTT1VSQ0VfQlVTWTsNCj4+Pj4gLQkJ
CXJlcy0+ZGVzYyA9IElPUkVTX0RFU0NfTk9ORTsNCj4+Pj4gKwkJCXJlcy0+ZGVzYyA9IElPUkVT
X0RFU0NfUkVTRVJWRUQ7DQo+Pj4+ICAJCQlyZXMtPmNoaWxkID0gTlVMTDsNCj4+Pj4gIAkJCWlm
IChyZXF1ZXN0X3Jlc291cmNlKHBhcmVudCwgcmVzKSA9PSAwKQ0KPj4+PiAgCQkJCXJlc2VydmVk
ID0geCsxOw0KPj4+PiAtLSANCj4+Pj4gMi4xNy4xDQo+Pj4+DQo+Pj4NCj4+Pg0KPj4+IFRoZXJl
IGFyZSBhIGxvdCBvZiBwbGFjZXMgY2FsbCByZWdpb25faW50ZXJzZWN0cyB3aGljaCB1c2UgREVT
Q19OT05FLA0KPj4+IEknbSBub3Qgc3VyZSBpZiBuZWVkZWQgY2hhbmdlcyBhY2NvcmRpbmdseS4g
IENjZWQgRGFuIGFuZCBUb3NoaS4NCj4+Pg0KPj4+DQo+Pj4gVGhhbmtzDQo+Pj4gRGF2ZQ0KPj4+
DQo

WARNING: multiple messages have this Message-ID (diff)
From: "Lendacky, Thomas" <Thomas.Lendacky@amd.com>
To: lijiang <lijiang@redhat.com>
Cc: Dave Young <dyoung@redhat.com>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	"kexec@lists.infradead.org" <kexec@lists.infradead.org>,
	"x86@kernel.org" <x86@kernel.org>,
	"linux-ia64@vger.kernel.org" <linux-ia64@vger.kernel.org>,
	"linux-efi@vger.kernel.org" <linux-efi@vger.kernel.org>,
	"tglx@linutronix.de" <tglx@linutronix.de>,
	"mingo@redhat.com" <mingo@redhat.com>,
	"bp@alien8.de" <bp@alien8.de>,
	"akpm@linux-foundation.org" <akpm@linux-foundation.org>,
	"dave.hansen@linux.intel.com" <dave.hansen@linux.intel.com>,
	"luto@kernel.org" <luto@kernel.org>,
	"peterz@infradead.org" <peterz@infradead.org>,
	"ard.biesheuvel@linaro.org" <ard.biesheuvel@linaro.org>,
	"tony.luck@intel.com" <tony.luck@intel.com>,
	"fenghua.yu@intel.com" <fenghua.yu@intel.com>,
	"bhe@redhat.com" <bhe@redhat.com>, Toshi Kani <toshi.kani@hp.com>,
	Dan Williams <dan.j.williams@intel.com>
Subject: Re: [PATCH 1/2 v8] resource: add the new I/O resource descriptor 'IORES_DESC_RESERVED'
Date: Mon, 25 Mar 2019 19:34:25 +0000	[thread overview]
Message-ID: <b1556461-fe83-2ba0-00a3-e8ecf3e286fe@amd.com> (raw)
In-Reply-To: <95661569-d9c9-af13-11c4-c0d752710a1f@redhat.com>

On 3/16/19 2:31 AM, lijiang wrote:
> 
> 
> 在 2018年12月05日 05:33, Lendacky, Thomas 写道:
>> On 11/29/2018 09:37 PM, Dave Young wrote:
>>> + more people
>>>
>>> On 11/29/18 at 04:09pm, Lianbo Jiang wrote:
>>>> When doing kexec_file_load, the first kernel needs to pass the e820
>>>> reserved ranges to the second kernel. But kernel can not exactly
>>>> match the e820 reserved ranges when walking through the iomem resources
>>>> with the descriptor 'IORES_DESC_NONE', because several e820 types(
>>>> e.g. E820_TYPE_RESERVED_KERN/E820_TYPE_RAM/E820_TYPE_UNUSABLE/E820
>>>> _TYPE_RESERVED) are converted to the descriptor 'IORES_DESC_NONE'. It
>>>> may pass these four types to the kdump kernel, that is not desired result.
>>>>
>>>> So, this patch adds a new I/O resource descriptor 'IORES_DESC_RESERVED'
>>>> for the iomem resources search interfaces. It is helpful to exactly
>>>> match the reserved resource ranges when walking through iomem resources.
>>>>
>>>> In addition, since the new descriptor 'IORES_DESC_RESERVED' is introduced,
>>>> these code originally related to the descriptor 'IORES_DESC_NONE' need to
>>>> be updated. Otherwise, it will be easily confused and also cause some
>>>> errors. Because the 'E820_TYPE_RESERVED' type is converted to the new
>>>> descriptor 'IORES_DESC_RESERVED' instead of 'IORES_DESC_NONE', it has been
>>>> changed.
>>>>
>>>> Suggested-by: Dave Young <dyoung@redhat.com>
>>>> Signed-off-by: Lianbo Jiang <lijiang@redhat.com>
>>>> ---
>>>>  arch/ia64/kernel/efi.c |  4 ++++
>>>>  arch/x86/kernel/e820.c |  2 +-
>>>>  arch/x86/mm/ioremap.c  | 13 ++++++++++++-
>>>>  include/linux/ioport.h |  1 +
>>>>  kernel/resource.c      |  6 +++---
>>>>  5 files changed, 21 insertions(+), 5 deletions(-)
>>>>
>>>> diff --git a/arch/ia64/kernel/efi.c b/arch/ia64/kernel/efi.c
>>>> index 8f106638913c..1841e9b4db30 100644
>>>> --- a/arch/ia64/kernel/efi.c
>>>> +++ b/arch/ia64/kernel/efi.c
>>>> @@ -1231,6 +1231,10 @@ efi_initialize_iomem_resources(struct resource *code_resource,
>>>>  				break;
>>>>  
>>>>  			case EFI_RESERVED_TYPE:
>>>> +				name = "reserved";
>>>
>>> Ingo updated X86 code to use "Reserved",  I think it would be good to do
>>> same for this case as well
>>>
>>>> +				desc = IORES_DESC_RESERVED;
>>>> +				break;
>>>> +
>>>>  			case EFI_RUNTIME_SERVICES_CODE:
>>>>  			case EFI_RUNTIME_SERVICES_DATA:
>>>>  			case EFI_ACPI_RECLAIM_MEMORY:
>>>
>>> Originally, above 3 are all "reserved", so probably they all should be
>>> IORES_DESC_RESERVED.
>>>
>>> Can any IA64 people to review this?
>>>
>>>> diff --git a/arch/x86/kernel/e820.c b/arch/x86/kernel/e820.c
>>>> index 50895c2f937d..57fafdafb860 100644
>>>> --- a/arch/x86/kernel/e820.c
>>>> +++ b/arch/x86/kernel/e820.c
>>>> @@ -1048,10 +1048,10 @@ static unsigned long __init e820_type_to_iores_desc(struct e820_entry *entry)
>>>>  	case E820_TYPE_NVS:		return IORES_DESC_ACPI_NV_STORAGE;
>>>>  	case E820_TYPE_PMEM:		return IORES_DESC_PERSISTENT_MEMORY;
>>>>  	case E820_TYPE_PRAM:		return IORES_DESC_PERSISTENT_MEMORY_LEGACY;
>>>> +	case E820_TYPE_RESERVED:	return IORES_DESC_RESERVED;
>>>>  	case E820_TYPE_RESERVED_KERN:	/* Fall-through: */
>>>>  	case E820_TYPE_RAM:		/* Fall-through: */
>>>>  	case E820_TYPE_UNUSABLE:	/* Fall-through: */
>>>> -	case E820_TYPE_RESERVED:	/* Fall-through: */
>>>>  	default:			return IORES_DESC_NONE;
>>>>  	}
>>>>  }
>>>> diff --git a/arch/x86/mm/ioremap.c b/arch/x86/mm/ioremap.c
>>>> index 5378d10f1d31..fea2ef99415d 100644
>>>> --- a/arch/x86/mm/ioremap.c
>>>> +++ b/arch/x86/mm/ioremap.c
>>>> @@ -83,7 +83,18 @@ static bool __ioremap_check_ram(struct resource *res)
>>>>  
>>>>  static int __ioremap_check_desc_other(struct resource *res)
>>>>  {
>>>> -	return (res->desc != IORES_DESC_NONE);
>>>> +	/*
>>>> +	 * But now, the 'E820_TYPE_RESERVED' type is converted to the new
>>>> +	 * descriptor 'IORES_DESC_RESERVED' instead of 'IORES_DESC_NONE',
>>>> +	 * it has been changed. And the value of 'mem_flags.desc_other'
>>>> +	 * is equal to 'true' if we don't strengthen the condition in this
>>>> +	 * function, that is wrong. Because originally it is equal to
>>>> +	 * 'false' for the same reserved type.
>>>> +	 *
>>>> +	 * So, that would be nice to keep it the same as before.
>>>> +	 */
>>>> +	return ((res->desc != IORES_DESC_NONE) &&
>>>> +		(res->desc != IORES_DESC_RESERVED));
>>>>  }
>>>
>>> Added Tom since he added the check function.  Is it possible to only
>>> check explict valid desc types instead of exclude IORES_DESC_NONE?
>>
>> Sorry for the delay...
>>
>> The original intent of the check was to map most memory as encrypted under
>> SEV if it was marked with a specific descriptor, since it was likely to
>> not be MMIO. I tried converting most things that mapped memory to memremap
>> vs ioremap, but ACPI was one area that I left alone and this check catches
>> the mapping of the ACPI tables. I suppose it's possible to change this to
>> check just for IORES_DESC_ACPI_* values, but I would have to do some
>> testing.
> 
> Recently, i tested it according to your advice, here it is really checking for the
> 'IORES_DESC_ACPI_*' values.  If you agree to this change, i would add the following
> patch into this patch set and post them again.
> 
> [root@localhost linux]# git diff arch/x86/mm/ioremap.c
> diff --git a/arch/x86/mm/ioremap.c b/arch/x86/mm/ioremap.c
> index 0029604af8a4..0e3ba620612d 100644
> --- a/arch/x86/mm/ioremap.c
> +++ b/arch/x86/mm/ioremap.c
> @@ -83,7 +83,8 @@ static bool __ioremap_check_ram(struct resource *res)
>  
>  static int __ioremap_check_desc_other(struct resource *res)
>  {
> -       return (res->desc != IORES_DESC_NONE);
> +       return ((res->desc == IORES_DESC_ACPI_TABLES) ||
> +               (res->desc == IORES_DESC_ACPI_NV_STORAGE));

I'm not a big fan of this. I think you should leave it as the previous
check you had for IORES_DESC_NONE and IORES_DESC_RESERVED. There's no
telling what type of resources may be mapped in the future where this
will break.

Adding a nice comment here about how IORES_DESC_NONE originally was to
identify MMIO and reserved areas. Now IORES_DESC_RESERVED has been created
for the reserved areas so the check needs to be expanded so that these
areas aren't mapped encrypted when using ioremap.

Thanks,
Tom

>  }
> 
> 
> Thanks.
> Lianbo
> 
>>
>> Thanks,
>> Tom
>>
>>>
>>>>  
>>>>  static int __ioremap_res_check(struct resource *res, void *arg)
>>>> diff --git a/include/linux/ioport.h b/include/linux/ioport.h
>>>> index da0ebaec25f0..6ed59de48bd5 100644
>>>> --- a/include/linux/ioport.h
>>>> +++ b/include/linux/ioport.h
>>>> @@ -133,6 +133,7 @@ enum {
>>>>  	IORES_DESC_PERSISTENT_MEMORY_LEGACY	= 5,
>>>>  	IORES_DESC_DEVICE_PRIVATE_MEMORY	= 6,
>>>>  	IORES_DESC_DEVICE_PUBLIC_MEMORY		= 7,
>>>> +	IORES_DESC_RESERVED			= 8,
>>>>  };
>>>>  
>>>>  /* helpers to define resources */
>>>> diff --git a/kernel/resource.c b/kernel/resource.c
>>>> index b0fbf685c77a..f34a632c4169 100644
>>>> --- a/kernel/resource.c
>>>> +++ b/kernel/resource.c
>>>> @@ -994,7 +994,7 @@ __reserve_region_with_split(struct resource *root, resource_size_t start,
>>>>  	res->start = start;
>>>>  	res->end = end;
>>>>  	res->flags = type | IORESOURCE_BUSY;
>>>> -	res->desc = IORES_DESC_NONE;
>>>> +	res->desc = IORES_DESC_RESERVED;
>>>>  
>>>>  	while (1) {
>>>>  
>>>> @@ -1029,7 +1029,7 @@ __reserve_region_with_split(struct resource *root, resource_size_t start,
>>>>  				next_res->start = conflict->end + 1;
>>>>  				next_res->end = end;
>>>>  				next_res->flags = type | IORESOURCE_BUSY;
>>>> -				next_res->desc = IORES_DESC_NONE;
>>>> +				next_res->desc = IORES_DESC_RESERVED;
>>>>  			}
>>>>  		} else {
>>>>  			res->start = conflict->end + 1;
>>>> @@ -1477,7 +1477,7 @@ static int __init reserve_setup(char *str)
>>>>  			res->start = io_start;
>>>>  			res->end = io_start + io_num - 1;
>>>>  			res->flags |= IORESOURCE_BUSY;
>>>> -			res->desc = IORES_DESC_NONE;
>>>> +			res->desc = IORES_DESC_RESERVED;
>>>>  			res->child = NULL;
>>>>  			if (request_resource(parent, res) == 0)
>>>>  				reserved = x+1;
>>>> -- 
>>>> 2.17.1
>>>>
>>>
>>>
>>> There are a lot of places call region_intersects which use DESC_NONE,
>>> I'm not sure if needed changes accordingly.  Cced Dan and Toshi.
>>>
>>>
>>> Thanks
>>> Dave
>>>

  reply	other threads:[~2019-03-25 19:34 UTC|newest]

Thread overview: 63+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-11-29  8:09 [PATCH 0/2 v8] add reserved e820 ranges to the kdump kernel e820 table Lianbo Jiang
2018-11-29  8:09 ` Lianbo Jiang
2018-11-29  8:09 ` Lianbo Jiang
2018-11-29  8:09 ` [PATCH 1/2 v8] resource: add the new I/O resource descriptor 'IORES_DESC_RESERVED' Lianbo Jiang
2018-11-29  8:09   ` Lianbo Jiang
2018-11-29  8:09   ` Lianbo Jiang
2018-11-30  3:37   ` Dave Young
2018-11-30  3:37     ` Dave Young
2018-11-30  3:37     ` Dave Young
2018-11-30  3:37     ` Dave Young
2018-11-30  3:49     ` Dave Young
2018-11-30  3:49       ` Dave Young
2018-11-30  3:49       ` Dave Young
2018-11-30  7:04     ` lijiang
2018-11-30  7:04       ` lijiang
2018-11-30  7:04       ` lijiang
2018-12-06 20:11       ` Borislav Petkov
2018-12-06 20:11         ` Borislav Petkov
2018-12-06 20:11         ` Borislav Petkov
2018-12-10  4:20         ` lijiang
2018-12-10  4:20           ` lijiang
2018-12-10  4:20           ` lijiang
2019-01-07  5:10         ` lijiang
2019-01-07  5:10           ` lijiang
2019-01-07  5:10           ` lijiang
2019-01-07  5:10           ` lijiang
2018-12-04 21:33     ` Lendacky, Thomas
2018-12-04 21:33       ` Lendacky, Thomas
2018-12-04 21:33       ` Lendacky, Thomas
2018-12-04 21:33       ` Lendacky, Thomas
2018-12-12  1:55       ` lijiang
2018-12-12  1:55         ` lijiang
2018-12-12  1:55         ` lijiang
2018-12-12  1:55         ` lijiang
2019-01-25 11:55       ` lijiang
2019-01-25 11:55         ` lijiang
2019-01-25 11:55         ` lijiang
2019-01-25 11:55         ` lijiang
2019-03-16  7:31       ` lijiang
2019-03-16  7:31         ` lijiang
2019-03-16  7:31         ` lijiang
2019-03-16  7:31         ` lijiang
2019-03-25 19:34         ` Lendacky, Thomas [this message]
2019-03-25 19:34           ` Lendacky, Thomas
2019-03-25 19:34           ` Lendacky, Thomas
2019-03-25 19:34           ` Lendacky, Thomas
2019-03-26  9:52           ` lijiang
2019-03-26  9:52             ` lijiang
2019-03-26  9:52             ` lijiang
2019-03-26  9:52             ` lijiang
2019-03-26  9:58           ` Boris Petkov
2019-03-26  9:58             ` Boris Petkov
2019-03-26  9:58             ` Boris Petkov
2019-03-26  9:58             ` Boris Petkov
2018-11-30  3:41   ` Dave Young
2018-11-30  3:41     ` Dave Young
2018-11-30  3:41     ` Dave Young
2018-11-30  4:44     ` lijiang
2018-11-30  4:44       ` lijiang
2018-11-30  4:44       ` lijiang
2018-11-29  8:09 ` [PATCH 2/2 v8] x86/kexec_file: add reserved e820 ranges to kdump kernel e820 table Lianbo Jiang
2018-11-29  8:09   ` Lianbo Jiang
2018-11-29  8:09   ` Lianbo Jiang

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=b1556461-fe83-2ba0-00a3-e8ecf3e286fe@amd.com \
    --to=thomas.lendacky@amd.com \
    --cc=akpm@linux-foundation.org \
    --cc=ard.biesheuvel@linaro.org \
    --cc=bhe@redhat.com \
    --cc=bp@alien8.de \
    --cc=dan.j.williams@intel.com \
    --cc=dave.hansen@linux.intel.com \
    --cc=dyoung@redhat.com \
    --cc=fenghua.yu@intel.com \
    --cc=kexec@lists.infradead.org \
    --cc=lijiang@redhat.com \
    --cc=linux-efi@vger.kernel.org \
    --cc=linux-ia64@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=luto@kernel.org \
    --cc=mingo@redhat.com \
    --cc=peterz@infradead.org \
    --cc=tglx@linutronix.de \
    --cc=tony.luck@intel.com \
    --cc=toshi.kani@hp.com \
    --cc=x86@kernel.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.