This commit is contained in:
parent
b2c9f7c049
commit
cdde475187
@ -53,11 +53,15 @@ sub show_help()
|
|||||||
#
|
#
|
||||||
# Returns the value stored with "grubonce". If no value has been stored
|
# Returns the value stored with "grubonce". If no value has been stored
|
||||||
# or the /boot/grub/default file is not readable, then -1 is returned.
|
# or the /boot/grub/default file is not readable, then -1 is returned.
|
||||||
sub get_grubonce() # {{{
|
#
|
||||||
|
# Also emulate the behaviour when using GRUB which resets the 'magic once' flag
|
||||||
|
# when booting. Because we use kexec, we have to reset that 'magic once' flag
|
||||||
|
# ourselves.
|
||||||
|
sub get_grubonce_and_reset_magic() # {{{
|
||||||
{
|
{
|
||||||
# no /boot/grub/default file
|
# no /boot/grub/default file
|
||||||
if (! -f $GRUBDEFAULT) {
|
if (! -f $GRUBDEFAULT) {
|
||||||
print_debug("get_grubonce(): No $GRUBDEFAULT.");
|
print_debug("get_grubonce_and_reset_magic(): No $GRUBDEFAULT.");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -65,11 +69,12 @@ sub get_grubonce() # {{{
|
|||||||
open(FH, $GRUBDEFAULT) or return -1;
|
open(FH, $GRUBDEFAULT) or return -1;
|
||||||
my $value;
|
my $value;
|
||||||
my $ret = sysread(FH, $value, 10);
|
my $ret = sysread(FH, $value, 10);
|
||||||
close FH;
|
close(FH);
|
||||||
|
|
||||||
# only if we have read 4 bytes it's valid
|
# only if we have read 4 bytes it's valid
|
||||||
if ($ret != 10) {
|
if ($ret != 10) {
|
||||||
print_debug("get_grubonce(): Read returned $ret instead of 4.");
|
print_debug("get_grubonce_and_reset_magic(): ".
|
||||||
|
"Read returned $ret instead of 4.");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -78,12 +83,20 @@ sub get_grubonce() # {{{
|
|||||||
my $once = int($value);
|
my $once = int($value);
|
||||||
|
|
||||||
# 0x4000 is the "magic once flag"
|
# 0x4000 is the "magic once flag"
|
||||||
if ($once & 0x4000) {
|
unless ($once & 0x4000) {
|
||||||
return $once & ~0x4000;
|
print_debug("get_grubonce_and_reset_magic(): No magic 0x40000.");
|
||||||
} else {
|
|
||||||
print_debug("get_grubonce(): No magic 0x40000.");
|
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
my $defaultno = $once & ~0x4000;
|
||||||
|
my $buf = $defaultno . "\0" . "\n" x 9;
|
||||||
|
|
||||||
|
# now reset the grubonce flag
|
||||||
|
open(FH, ">$GRUBDEFAULT") or return $defaultno;
|
||||||
|
$ret = syswrite(FH, $buf, 10);
|
||||||
|
close(FH);
|
||||||
|
|
||||||
|
return $defaultno;
|
||||||
} # }}}
|
} # }}}
|
||||||
|
|
||||||
#
|
#
|
||||||
@ -107,7 +120,7 @@ my $loader = Bootloader::Tools::GetBootloader();
|
|||||||
my $default = -1;
|
my $default = -1;
|
||||||
|
|
||||||
if ($loader =~ m/GRUB/i) {
|
if ($loader =~ m/GRUB/i) {
|
||||||
$default = get_grubonce();
|
$default = get_grubonce_and_reset_magic();
|
||||||
print_debug("GRUB Default: $default");
|
print_debug("GRUB Default: $default");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
16
kexec-tools-2.0.0-rpmlintrc
Normal file
16
kexec-tools-2.0.0-rpmlintrc
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
#
|
||||||
|
# The name for the init script is correct. kexec-tools is no name
|
||||||
|
# for an init script.
|
||||||
|
addFilter(".*incoherent-init-script-name.*");
|
||||||
|
|
||||||
|
#
|
||||||
|
# $null is a valid dependency.
|
||||||
|
addFilter(".*init-script-undefined-dependency.*");
|
||||||
|
|
||||||
|
#
|
||||||
|
# It does not make any sense to stop the "service" kexec on removal.
|
||||||
|
# kexec is no service but an init script to run kexec when rebooting.
|
||||||
|
# Stopping it here would lead to a very unexpected behaviour on reboot. :)
|
||||||
|
addFilter(".*init-script-without-%stop_on_removal-preun.*");
|
||||||
|
|
||||||
|
# :mode=python:
|
@ -22,33 +22,53 @@ Signed-off-by: Simon Horman <horms@verge.net.au>
|
|||||||
Acked-by: Bernhard Walle <bwalle@suse.de>
|
Acked-by: Bernhard Walle <bwalle@suse.de>
|
||||||
|
|
||||||
---
|
---
|
||||||
kexec/arch/ppc64/crashdump-ppc64.c | 9 ++++++++-
|
kexec/arch/ppc64/crashdump-ppc64.c | 12 ++++++++++--
|
||||||
1 file changed, 8 insertions(+), 1 deletion(-)
|
kexec/arch/ppc64/crashdump-ppc64.h | 3 +++
|
||||||
|
2 files changed, 13 insertions(+), 2 deletions(-)
|
||||||
|
|
||||||
--- a/kexec/arch/ppc64/crashdump-ppc64.c
|
--- a/kexec/arch/ppc64/crashdump-ppc64.c
|
||||||
+++ b/kexec/arch/ppc64/crashdump-ppc64.c
|
+++ b/kexec/arch/ppc64/crashdump-ppc64.c
|
||||||
@@ -124,7 +124,7 @@ static void exclude_crash_region(uint64_
|
@@ -121,12 +121,13 @@ static void exclude_crash_region(uint64_
|
||||||
static int get_dyn_reconf_crash_memory_ranges()
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
-static int get_dyn_reconf_crash_memory_ranges()
|
||||||
|
+static int get_dyn_reconf_crash_memory_ranges(void)
|
||||||
{
|
{
|
||||||
uint64_t start, end;
|
uint64_t start, end;
|
||||||
- char fname[128], buf[32];
|
char fname[128], buf[32];
|
||||||
+ char fname[128], buf[32], flags;
|
|
||||||
FILE *file;
|
FILE *file;
|
||||||
int i, n;
|
int i, n;
|
||||||
|
+ uint32_t flags;
|
||||||
|
|
||||||
@@ -152,6 +152,13 @@ static int get_dyn_reconf_crash_memory_r
|
strcpy(fname, "/proc/device-tree/");
|
||||||
|
strcat(fname, "ibm,dynamic-reconfiguration-memory/ibm,dynamic-memory");
|
||||||
|
@@ -150,10 +151,17 @@ static int get_dyn_reconf_crash_memory_r
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
start = ((uint64_t *)buf)[0];
|
- start = ((uint64_t *)buf)[0];
|
||||||
|
+ start = ((uint64_t *)buf)[DRCONF_ADDR];
|
||||||
end = start + lmb_size;
|
end = start + lmb_size;
|
||||||
|
if (start == 0 && end >= (BACKUP_SRC_END + 1))
|
||||||
|
start = BACKUP_SRC_END + 1;
|
||||||
+
|
+
|
||||||
+ flags = buf[23];
|
+ flags = (*((uint32_t *)&buf[DRCONF_FLAGS]));
|
||||||
+ /* skip this block if the reserved bit is set in flags (0x80)
|
+ /* skip this block if the reserved bit is set in flags (0x80)
|
||||||
+ or if the memory region is not assigned to this partition (0x8) */
|
+ or if the block is not assigned to this partition (0x8) */
|
||||||
+ if ((flags & 0x80) || !(flags & 0x8))
|
+ if ((flags & 0x80) || !(flags & 0x8))
|
||||||
+ continue;
|
+ continue;
|
||||||
+
|
+
|
||||||
if (start == 0 && end >= (BACKUP_SRC_END + 1))
|
|
||||||
start = BACKUP_SRC_END + 1;
|
|
||||||
exclude_crash_region(start, end);
|
exclude_crash_region(start, end);
|
||||||
|
}
|
||||||
|
fclose(file);
|
||||||
|
--- a/kexec/arch/ppc64/crashdump-ppc64.h
|
||||||
|
+++ b/kexec/arch/ppc64/crashdump-ppc64.h
|
||||||
|
@@ -31,4 +31,7 @@ extern unsigned int rtas_size;
|
||||||
|
uint64_t lmb_size;
|
||||||
|
unsigned int num_of_lmbs;
|
||||||
|
|
||||||
|
+#define DRCONF_ADDR 0
|
||||||
|
+#define DRCONF_FLAGS 20
|
||||||
|
+
|
||||||
|
#endif /* CRASHDUMP_PPC64_H */
|
||||||
|
@ -1,3 +1,17 @@
|
|||||||
|
-------------------------------------------------------------------
|
||||||
|
Mon Oct 27 10:25:42 CET 2008 - bwalle@suse.de
|
||||||
|
|
||||||
|
- Update patch that checks for reserved and assigned bit flags on
|
||||||
|
the memory regions (bnc#438086).
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Sun Oct 26 18:11:02 CET 2008 - bwalle@suse.de
|
||||||
|
|
||||||
|
- Clear grubonce after using in kexec-bootloader (bnc#438194).
|
||||||
|
- Add rpmlint supression file.
|
||||||
|
- Correct debugging output: Number of section was one too small
|
||||||
|
(last index != size of array).
|
||||||
|
|
||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
Fri Oct 24 14:17:21 CEST 2008 - bwalle@suse.de
|
Fri Oct 24 14:17:21 CEST 2008 - bwalle@suse.de
|
||||||
|
|
||||||
|
@ -29,11 +29,12 @@ PreReq: %insserv_prereq %fillup_prereq
|
|||||||
AutoReqProv: on
|
AutoReqProv: on
|
||||||
Summary: Tools for fast kernel loading
|
Summary: Tools for fast kernel loading
|
||||||
Version: 2.0.0
|
Version: 2.0.0
|
||||||
Release: 42
|
Release: 43
|
||||||
Source: %{name}-%{version}.tar.bz2
|
Source: %{name}-%{version}.tar.bz2
|
||||||
Source1: kexec-bootloader
|
Source1: kexec-bootloader
|
||||||
Source2: kexec-bootloader.8.txt
|
Source2: kexec-bootloader.8.txt
|
||||||
Source3: kexec.init
|
Source3: kexec.init
|
||||||
|
Source4: %{name}-%{version}-rpmlintrc
|
||||||
Patch0: %{name}-ia64-uncached-memory.diff
|
Patch0: %{name}-ia64-uncached-memory.diff
|
||||||
Patch1: %{name}-ia64-PA.diff
|
Patch1: %{name}-ia64-PA.diff
|
||||||
Patch2: %{name}-build-warnings.diff
|
Patch2: %{name}-build-warnings.diff
|
||||||
@ -148,10 +149,18 @@ install -m 0755 kexec.init ${RPM_BUILD_ROOT}/etc/init.d/kexec
|
|||||||
%endif
|
%endif
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Mon Oct 27 2008 bwalle@suse.de
|
||||||
|
- Update patch that checks for reserved and assigned bit flags on
|
||||||
|
the memory regions (bnc#438086).
|
||||||
|
* Sun Oct 26 2008 bwalle@suse.de
|
||||||
|
- Clear grubonce after using in kexec-bootloader (bnc#438194).
|
||||||
|
- Add rpmlint supression file.
|
||||||
|
- Correct debugging output: Number of section was one too small
|
||||||
|
(last index != size of array).
|
||||||
* Fri Oct 24 2008 bwalle@suse.de
|
* Fri Oct 24 2008 bwalle@suse.de
|
||||||
- Check for reserved and assigned bit flags on the memory regions
|
- Check for reserved and assigned bit flags on the memory regions
|
||||||
(bnc#438086).
|
(bnc#438086).
|
||||||
* Sun Oct 19 2008 bwalle@suse.de
|
* Sat Oct 18 2008 bwalle@suse.de
|
||||||
- Honor grubonce also when the 1st (== 0th) entry was chosen.
|
- Honor grubonce also when the 1st (== 0th) entry was chosen.
|
||||||
* Mon Oct 13 2008 bwalle@suse.de
|
* Mon Oct 13 2008 bwalle@suse.de
|
||||||
- Fix runlevels (Default-Start, Default-Stop) in kexec.init.
|
- Fix runlevels (Default-Start, Default-Stop) in kexec.init.
|
||||||
@ -320,7 +329,7 @@ install -m 0755 kexec.init ${RPM_BUILD_ROOT}/etc/init.d/kexec
|
|||||||
package
|
package
|
||||||
* Wed Aug 29 2007 bwalle@suse.de
|
* Wed Aug 29 2007 bwalle@suse.de
|
||||||
- add reset_devices kernel parameter as default
|
- add reset_devices kernel parameter as default
|
||||||
* Sun Aug 26 2007 olh@suse.de
|
* Sat Aug 25 2007 olh@suse.de
|
||||||
- do not require kdump-helpers on s390
|
- do not require kdump-helpers on s390
|
||||||
* Fri Jul 27 2007 bwalle@suse.de
|
* Fri Jul 27 2007 bwalle@suse.de
|
||||||
- update documentation for deleting all dumps (#302257)
|
- update documentation for deleting all dumps (#302257)
|
||||||
|
Loading…
Reference in New Issue
Block a user