From mboxrd@z Thu Jan 1 00:00:00 1970 Return-path: Received: from mx2.suse.de ([195.135.220.15]) by canuck.infradead.org with esmtps (Exim 4.63 #1 (Red Hat Linux)) id 1IV5Zs-0002MZ-IA for kexec@lists.infradead.org; Tue, 11 Sep 2007 09:14:56 -0400 Date: Tue, 11 Sep 2007 15:14:45 +0200 From: Olaf Dabrunz Subject: Re: [patch 1/5] Extended crashkernel command line Message-ID: <20070911131445.GA17460@suse.de> References: <20070909083914.065380136@strauss.suse.de> <20070909083914.488571169@strauss.suse.de> Mime-Version: 1.0 Content-Disposition: inline In-Reply-To: <20070909083914.488571169@strauss.suse.de> List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: kexec-bounces@lists.infradead.org Errors-To: kexec-bounces+dwmw2=infradead.org+dwmw2=infradead.org@lists.infradead.org To: Bernhard Walle Cc: linux-arch@vger.kernel.org, kexec@lists.infradead.org, linux-kernel@vger.kernel.org T24gMDktU2VwLTA3LCBCZXJuaGFyZCBXYWxsZSB3cm90ZToKPiBJZiB0aGVyZSBhcmUgbXVsdGlw bGUgb2NjdXJyZW5jZXMsIHRoZW4gdGhlIGxhc3Qgb25lIGlzIHRha2VuLiAgVGhlIGFkdmFudGFn ZQo+IGlzIHRoYXQgaWYgeW91IGhhdmUgYSBib290bG9hZGVyIGxpa2UgbGlsbyBvciBlbGlsbyB3 aGljaCBhbGxvd3MgeW91IHRvIGFwcGVuZAo+IGEgY29tbWFuZCBsaW5lIHBhcmFtZXRlciBidXQg bm90IHRvIHJlbW92ZSBvbmUgKGxpa2UgaW4gR1JVQiksIHRoZW4geW91IGNhbiBhZGQKPiBhbm90 aGVyIGNyYXNoa2VybmVsIHZhbHVlIGZvciB0ZXN0aW5nIGF0IHRoZSBib290IGNvbW1hbmQgbGlu ZSBhbmQgdGhpcyBvbmUKPiBvdmVyd3JpdGVzIHRoZSBjb21tYW5kIGxpbmUgaW4gdGhlIGNvbmZp Z3VyYXRpb24gdGhlbi4KCkFGQUlLIGl0IGlzIHRoZSBvdGhlciB3YXkgcm91bmQ6IHRoZSBsaWxv IGNvbmZpZ3VyYXRpb24tcGFyYW1ldGVyCiJhcHBlbmQiIGFwcGVuZHMgdGhlIGtlcm5lbCBwYXJh bWV0ZXJzIGluIHRoZSBjb25maWd1cmF0aW9uIHRvIHRoZQpwYXJhbWV0ZXJzIGdpdmVuIGJ5IHRo ZSB1c2VyIG9uIHRoZSBrZXJuZWwgY29tbWFuZCBsaW5lLgoKU28gdGhlIHBhcmFtZXRlcnMgc2V0 IGJ5IHRoZSB1c2VyIGR1cmluZyBib290IGFwcGVhciBmaXJzdCBvbiB0aGUKY29tbWFuZCBsaW5l LgoKPiBTaWduZWQtb2ZmLWJ5OiBCZXJuaGFyZCBXYWxsZSA8YndhbGxlQHN1c2UuZGU+Cj4gCj4g LS0tCj4gIGluY2x1ZGUvbGludXgva2V4ZWMuaCB8ICAgIDIgCj4gIGtlcm5lbC9rZXhlYy5jICAg ICAgICB8ICAxMzkgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysKPiAgMiBmaWxlcyBjaGFuZ2VkLCAxNDEgaW5zZXJ0aW9ucygrKQo+IAo+IC0tLSBhL2lu Y2x1ZGUvbGludXgva2V4ZWMuaAo+ICsrKyBiL2luY2x1ZGUvbGludXgva2V4ZWMuaAo+IEBAIC0x NzksNiArMTc5LDggQEAgZXh0ZXJuIG5vdGVfYnVmX3QgKmNyYXNoX25vdGVzOwo+ICBleHRlcm4g dTMyIHZtY29yZWluZm9fbm90ZVtWTUNPUkVJTkZPX05PVEVfU0laRS80XTsKPiAgZXh0ZXJuIHVu c2lnbmVkIGludCB2bWNvcmVpbmZvX3NpemU7Cj4gIGV4dGVybiB1bnNpZ25lZCBpbnQgdm1jb3Jl aW5mb19tYXhfc2l6ZTsKPiAraW50IHBhcnNlX2NyYXNoa2VybmVsKGNoYXIgKmNtZGxpbmUsIHVu c2lnbmVkIGxvbmcgbG9uZyBzeXN0ZW1fcmFtLAo+ICsJCXVuc2lnbmVkIGxvbmcgbG9uZyAqY3Jh c2hfc2l6ZSwgdW5zaWduZWQgbG9uZyBsb25nICpjcmFzaF9iYXNlKTsKPiAgCj4gIFsuLi5dCj4g IAo+ICtpbnQgcGFyc2VfY3Jhc2hrZXJuZWwoY2hhciAJCSAqY21kbGluZSwKPiArCQkgICAgICB1 bnNpZ25lZCBsb25nIGxvbmcgc3lzdGVtX3JhbSwKPiArCQkgICAgICB1bnNpZ25lZCBsb25nIGxv bmcgKmNyYXNoX3NpemUsCj4gKwkJICAgICAgdW5zaWduZWQgbG9uZyBsb25nICpjcmFzaF9iYXNl KQo+ICt7Cj4gKwljaGFyIAkqcCA9IGNtZGxpbmUsICpja19jbWRsaW5lID0gTlVMTDsKPiArCWNo YXIJKmZpcnN0X2NvbG9uLCAqZmlyc3Rfc3BhY2U7Cj4gKwo+ICsJLyogZmluZCBjcmFzaGtlcm5l bCBhbmQgdXNlIHRoZSBsYXN0IG9uZSBpZiB0aGVyZSBhcmUgbW9yZSAqLwo+ICsJcCA9IHN0cnN0 cihwLCAiY3Jhc2hrZXJuZWw9Iik7Cj4gKwl3aGlsZSAocCkgewo+ICsJCWNrX2NtZGxpbmUgPSBw Owo+ICsJCXAgPSBzdHJzdHIocCsxLCAiY3Jhc2hrZXJuZWw9Iik7Cj4gKwl9Cj4gKwoKU28gcGVy aGFwcyBzb21ldGhpbmcgbGlrZSB0aGlzIGluc3RlYWQ6CgorCS8qIGZpbmQgY3Jhc2hrZXJuZWwg YW5kIHVzZSB0aGUgZmlyc3Qgb25lIGlmIHRoZXJlIGFyZSBtb3JlICovCisJcCA9IHN0cnN0cihw LCAiY3Jhc2hrZXJuZWw9Iik7CisJY2tfY21kbGluZSA9IHA7Cgo+ICsJaWYgKCFja19jbWRsaW5l KQo+ICsJCXJldHVybiAtRUlOVkFMOwo+ICsKPiArCWNrX2NtZGxpbmUgKz0gMTI7IC8qIHN0cmxl bigiY3Jhc2hrZXJuZWw9IikgKi8KPiArCj4gKwkvKgo+ICsJICogaWYgdGhlIGNvbW1hbmRsaW5l IGNvbnRhaW5zIGEgJzonLCB0aGVuIHRoYXQncyB0aGUgZXh0ZW5kZWQKPiArCSAqIHN5bnRheCAt LSBpZiBub3QsIGl0IG11c3QgYmUgdGhlIGNsYXNzaWMgc3ludGF4Cj4gKwkgKi8KPiArCWZpcnN0 X2NvbG9uID0gc3RyY2hyKGNrX2NtZGxpbmUsICc6Jyk7Cj4gKwlmaXJzdF9zcGFjZSA9IHN0cmNo cihja19jbWRsaW5lLCAnICcpOwo+ICsJaWYgKGZpcnN0X2NvbG9uICYmICghZmlyc3Rfc3BhY2Ug fHwgZmlyc3RfY29sb24gPCBmaXJzdF9zcGFjZSkpCj4gCj4gWy4uLl0KCi0tIApPbGFmIERhYnJ1 bnogKG9kL29kYWJydW56KSwgU1VTRSBMaW51eCBQcm9kdWN0cyBHbWJILCBOw7xybmJlcmcKCgpf X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwprZXhlYyBtYWls aW5nIGxpc3QKa2V4ZWNAbGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5mcmFkZWFk Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL2tleGVjCg== From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from ns2.suse.de ([195.135.220.15]:42635 "EHLO mx2.suse.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751595AbXIKNOq (ORCPT ); Tue, 11 Sep 2007 09:14:46 -0400 Date: Tue, 11 Sep 2007 15:14:45 +0200 From: Olaf Dabrunz Subject: Re: [patch 1/5] Extended crashkernel command line Message-ID: <20070911131445.GA17460@suse.de> References: <20070909083914.065380136@strauss.suse.de> <20070909083914.488571169@strauss.suse.de> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <20070909083914.488571169@strauss.suse.de> Sender: linux-arch-owner@vger.kernel.org To: Bernhard Walle Cc: kexec@lists.infradead.org, linux-kernel@vger.kernel.org, linux-arch@vger.kernel.org List-ID: On 09-Sep-07, Bernhard Walle wrote: > If there are multiple occurrences, then the last one is taken. The advantage > is that if you have a bootloader like lilo or elilo which allows you to append > a command line parameter but not to remove one (like in GRUB), then you can add > another crashkernel value for testing at the boot command line and this one > overwrites the command line in the configuration then. AFAIK it is the other way round: the lilo configuration-parameter "append" appends the kernel parameters in the configuration to the parameters given by the user on the kernel command line. So the parameters set by the user during boot appear first on the command line. > Signed-off-by: Bernhard Walle > > --- > include/linux/kexec.h | 2 > kernel/kexec.c | 139 ++++++++++++++++++++++++++++++++++++++++++++++++++ > 2 files changed, 141 insertions(+) > > --- a/include/linux/kexec.h > +++ b/include/linux/kexec.h > @@ -179,6 +179,8 @@ extern note_buf_t *crash_notes; > extern u32 vmcoreinfo_note[VMCOREINFO_NOTE_SIZE/4]; > extern unsigned int vmcoreinfo_size; > extern unsigned int vmcoreinfo_max_size; > +int parse_crashkernel(char *cmdline, unsigned long long system_ram, > + unsigned long long *crash_size, unsigned long long *crash_base); > > [...] > > +int parse_crashkernel(char *cmdline, > + unsigned long long system_ram, > + unsigned long long *crash_size, > + unsigned long long *crash_base) > +{ > + char *p = cmdline, *ck_cmdline = NULL; > + char *first_colon, *first_space; > + > + /* find crashkernel and use the last one if there are more */ > + p = strstr(p, "crashkernel="); > + while (p) { > + ck_cmdline = p; > + p = strstr(p+1, "crashkernel="); > + } > + So perhaps something like this instead: + /* find crashkernel and use the first one if there are more */ + p = strstr(p, "crashkernel="); + ck_cmdline = p; > + if (!ck_cmdline) > + return -EINVAL; > + > + ck_cmdline += 12; /* strlen("crashkernel=") */ > + > + /* > + * if the commandline contains a ':', then that's the extended > + * syntax -- if not, it must be the classic syntax > + */ > + first_colon = strchr(ck_cmdline, ':'); > + first_space = strchr(ck_cmdline, ' '); > + if (first_colon && (!first_space || first_colon < first_space)) > > [...] -- Olaf Dabrunz (od/odabrunz), SUSE Linux Products GmbH, Nürnberg