On Mon, 5 Sept 2022 at 14:08, Baoquan He <bhe@xxxxxxxxxx> wrote: > > On 09/05/22 at 01:28pm, Mike Rapoport wrote: > > On Thu, Sep 01, 2022 at 08:25:54PM +0800, Baoquan He wrote: > > > On 09/01/22 at 10:24am, Mike Rapoport wrote: > > > > > > max_zone_phys() only handles cases when CONFIG_ZONE_DMA/DMA32 enabled, > > > the disabledCONFIG_ZONE_DMA/DMA32 case is not included. I can change > > > it like: > > > > > > static phys_addr_t __init crash_addr_low_max(void) > > > { > > > phys_addr_t low_mem_mask = U32_MAX; > > > phys_addr_t phys_start = memblock_start_of_DRAM(); > > > > > > if ((!IS_ENABLED(CONFIG_ZONE_DMA) && !IS_ENABLED(CONFIG_ZONE_DMA32)) || > > > (phys_start > U32_MAX)) > > > low_mem_mask = PHYS_ADDR_MAX; > > > > > > return low_mem_mast + 1; > > > } > > > > > > or add the disabled CONFIG_ZONE_DMA/DMA32 case into crash_addr_low_max() > > > as you suggested. Which one do you like better? > > > > > > static phys_addr_t __init crash_addr_low_max(void) > > > { > > > if (!IS_ENABLED(CONFIG_ZONE_DMA) && !IS_ENABLED(CONFIG_ZONE_DMA32)) > > > return PHYS_ADDR_MAX + 1; > > > > > > return max_zone_phys(32); > > > } > > > > I like the second variant better. > > Sure, will change to use the 2nd one . Thanks. > While I appreciate the effort that has gone into solving this problem, I don't think there is any consensus that an elaborate fix is required to ensure that the crash kernel can be unmapped from the linear map at all cost. In fact, I personally think we shouldn't bother, and IIRC, Will made a remark along the same lines back when the Huawei engineers were still driving this effort. So perhaps we could align on that before doing yet another version of this?