On 11/15/18 at 05:55pm, Lianbo Jiang wrote: > The upstream kernel can not accurately add the e820 reserved type to > kdump krenel e820 table. > > Kdump uses walk_iomem_res_desc() to iterate io resources, then adds > the matched resource ranges to the e820 table for kdump kernel. But, > when convert the e820 type into the iores descriptor, several e820 > types are converted to 'IORES_DESC_NONE' in this function e820_type > _to_iores_desc(). So the walk_iomem_res_desc() will get unnecessary > types(such as E820_TYPE_RAM/E820_TYPE_UNUSABLE/E820_TYPE_KERN) when > walk through io resources by the descriptor 'IORES_DESC_NONE'. > > This patch adds the 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. > > Suggested-by: Dave Young <dyoung@xxxxxxxxxx> > Signed-off-by: Lianbo Jiang <lijiang@xxxxxxxxxx> > --- > Changes since v5: > 1. Improve the patch log > > Changes since v6: > 1. Modify this patch, and add the new I/O resource descriptor > 'IORES_DESC_RESERVED' for the iomem resources search interfaces. > 2. Improve patch log. > > arch/x86/kernel/e820.c | 2 +- > include/linux/ioport.h | 1 + > 2 files changed, 2 insertions(+), 1 deletion(-) > > 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/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, > }; There more works for a new iores desc. Originally IORES_DESC_NONE is assumed to include reserved e820 type so all code path relates to IORES_DESC_NONE should be carefully checked and ensure they still work after your changes. > > /* helpers to define resources */ > -- > 2.17.1 > > > _______________________________________________ > kexec mailing list > kexec@xxxxxxxxxxxxxxxxxxx > http://lists.infradead.org/mailman/listinfo/kexec Thanks Dave _______________________________________________ kexec mailing list kexec@xxxxxxxxxxxxxxxxxxx http://lists.infradead.org/mailman/listinfo/kexec