Received: by 2002:ac0:a5a7:0:0:0:0:0 with SMTP id m36-v6csp6026771imm; Mon, 23 Jul 2018 10:05:53 -0700 (PDT) X-Google-Smtp-Source: AAOMgpcBBHWSGfZX5Dn3KLo2zefOSwZoauZOfe/AfJINbCbbtX1TilmXqJSCvR2OwzXoBQI0a2NX X-Received: by 2002:a17:902:5a08:: with SMTP id q8-v6mr13469085pli.300.1532365553077; Mon, 23 Jul 2018 10:05:53 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1532365553; cv=none; d=google.com; s=arc-20160816; b=n47C9boru+QaDIn1li95ZmpOXS6mHM/YngMykjs2J3EgNZBUfmyHrOupbu0fuF3aet OmH3V9VSkHtPvApj9+UV0BIewu4RCUkASYL6w6sugCq16D0HJtTDH14cSu2QF8nrjpKx ItMkdpPAs22QKTGGwhBMLq95kKstuoamLZh1D59HR7BbZc8MA0xuk+0gfCRpi1K3YzLy 0lGHVsYQY415ov9rXnw6ATSalgzR2cX6n7aYRf+8W+pvtyrATpIBVkno89teB+vzOK8k DNz65P+JlwoFI7DQaD5bc0491IshEq32IzWgEDxh42EOw9lGLn4/KxfyJkQPewd5PwGP vbJw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding :content-language:in-reply-to:mime-version:user-agent:date :message-id:cc:from:references:to:subject:arc-authentication-results; bh=BAi6pMSekFz924fxQupGXpU42kDi6OyAq6unQVJQGL8=; b=j0wuB0wDhewF3oDqyZYEgCzXn3HWNNfm+T8ukahDyWQSNskiB7/klycIpavgDIgTRS +P8MWOdvY0HV2QRLQ7Kq8oss0RFczLETYWs4Ok6ChK9YLPfcOErBlqOz44B3lvroT4P9 G2PmiSo2vOamSYOlRhmIYid/wgsHWtHLmmEqui40zzkYwKKYELwjz0vUO9+IkIKb1Iw1 VdGePVuciCwdKMIew/CmFXsikNvSCgsG3X1URwg9WyFZFgzy9GHk5WFcOdOqK8iep+NE 3rlVh7gQqvcUZ1XQ2gk2qQQ31BGQThTVFUu3gyCb1z6/kviuNEn58hyZG1w/91gZsPEo RUNw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id l18-v6si8530715pgi.249.2018.07.23.10.05.38; Mon, 23 Jul 2018 10:05:53 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2388915AbeGWSGN (ORCPT + 99 others); Mon, 23 Jul 2018 14:06:13 -0400 Received: from usa-sjc-mx-foss1.foss.arm.com ([217.140.101.70]:36934 "EHLO foss.arm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2388357AbeGWSGN (ORCPT ); Mon, 23 Jul 2018 14:06:13 -0400 Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.72.51.249]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 90A0B18A; Mon, 23 Jul 2018 10:04:04 -0700 (PDT) Received: from [10.4.12.81] (melchizedek.emea.arm.com [10.4.12.81]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 30D263F5D0; Mon, 23 Jul 2018 10:04:02 -0700 (PDT) Subject: Re: [PATCH v11 11/15] arm64: kexec_file: add crash dump support To: AKASHI Takahiro References: <20180711074203.3019-1-takahiro.akashi@linaro.org> <20180711074203.3019-12-takahiro.akashi@linaro.org> <9efd0567-35dc-7435-74d6-1b540f3e5b9f@arm.com> <20180723053923.GN11258@linaro.org> From: James Morse Cc: catalin.marinas@arm.com, will.deacon@arm.com, dhowells@redhat.com, vgoyal@redhat.com, herbert@gondor.apana.org.au, davem@davemloft.net, dyoung@redhat.com, bhe@redhat.com, arnd@arndb.de, ard.biesheuvel@linaro.org, bhsharma@redhat.com, kexec@lists.infradead.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org Message-ID: <8600c940-158a-f64f-8271-32f8fb40f198@arm.com> Date: Mon, 23 Jul 2018 18:04:00 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.9.1 MIME-Version: 1.0 In-Reply-To: <20180723053923.GN11258@linaro.org> Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi Akashi, On 23/07/18 06:39, AKASHI Takahiro wrote: > On Wed, Jul 18, 2018 at 05:50:22PM +0100, James Morse wrote: >> On 11/07/18 08:41, AKASHI Takahiro wrote: >>> Enabling crash dump (kdump) includes >>> * prepare contents of ELF header of a core dump file, /proc/vmcore, >>> using crash_prepare_elf64_headers(), and >>> * add two device tree properties, "linux,usable-memory-range" and >>> "linux,elfcorehdr", which represent respectively a memory range >>> to be used by crash dump kernel and the header's location >> >>> diff --git a/arch/arm64/include/asm/kexec.h b/arch/arm64/include/asm/kexec.h >>> index 69333694e3e2..eeb5766928b0 100644 >>> --- a/arch/arm64/include/asm/kexec.h >>> +++ b/arch/arm64/include/asm/kexec.h >>> @@ -99,6 +99,10 @@ static inline void crash_post_resume(void) {} >>> struct kimage_arch { >>> phys_addr_t dtb_mem; >>> void *dtb_buf; >>> + /* Core ELF header buffer */ >> >>> + void *elf_headers; >> >> Shouldn't this be a phys_addr_t if it comes from kbuf.mem? > > Do you mean elf_load_addr? You're right. > But kexec_buf defined mem as unsigned long and so I'd rather change > dtb_mem to unsigned long instead of elf_load_addr, which will also be > renamed to elf_headers_mem for clarification. >> (dtb_mem is, and they type tells us which way round the runtime/kexec-time >> pointers are) My preference would be for physical addresses to always be phys_addr_t, but as long as we can easily spot the difference kexec-time versus runtime addresses, it will save bugs where we use the wrong one. >>> diff --git a/arch/arm64/kernel/machine_kexec_file.c b/arch/arm64/kernel/machine_kexec_file.c >>> index a0b44fe18b95..261564df7210 100644 >>> --- a/arch/arm64/kernel/machine_kexec_file.c >>> +++ b/arch/arm64/kernel/machine_kexec_file.c >>> @@ -132,6 +173,45 @@ static int setup_dtb(struct kimage *image, >>> + kbuf.buf_min = crashk_res.start; >>> + kbuf.buf_max = crashk_res.end + 1; >>> + kbuf.top_down = true; >>> + >>> + ret = kexec_add_buffer(&kbuf); >>> + if (ret) { >>> + vfree(hdrs_addr); >>> + goto out_err; >>> + } >>> + image->arch.elf_headers = hdrs_addr; >>> + image->arch.elf_headers_sz = hdrs_sz; >>> + image->arch.elf_load_addr = kbuf.mem; >>> + >>> + pr_debug("Loaded elf core header at 0x%lx bufsz=0x%lx memsz=0x%lx\n", >>> + image->arch.elf_load_addr, hdrs_sz, hdrs_sz); >>> + } >>> + >>> kbuf.image = image; >>> /* not allocate anything below the kernel */ >>> kbuf.buf_min = kernel_load_addr + kernel_size; >> I think the initramfs can escape the crash kernel range because you add to the >> buf_max region: >> | /* within 1GB-aligned window of up to 32GB in size */ >> | kbuf.buf_max = round_down(kernel_load_addr, SZ_1G) >> |  + (unsigned long)SZ_1G * 32; > > No worries. > kexec_add_buffer() will limit the search only within crashk_res anyway. via arch_kexec_walk_mem()? Got it. But strangely the buf_min and buf_max still matter because locate_mem_hole_callback() uses them. > Are you reviewing other patches in my v11? > If not, I will post v12 tomorrow. No, (I try to batch replies to avoid that happening). I'm reading up on Secure-boot and trying to test the pe_verification stuff... Thanks, James