SHA256
1
0
forked from pool/kexec-tools
OBS User unknown 2008-10-27 23:51:20 +00:00 committed by Git OBS Bridge
parent b2c9f7c049
commit cdde475187
5 changed files with 98 additions and 26 deletions

View File

@ -53,11 +53,15 @@ sub show_help()
#
# 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.
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
if (! -f $GRUBDEFAULT) {
print_debug("get_grubonce(): No $GRUBDEFAULT.");
print_debug("get_grubonce_and_reset_magic(): No $GRUBDEFAULT.");
return -1;
}
@ -65,11 +69,12 @@ sub get_grubonce() # {{{
open(FH, $GRUBDEFAULT) or return -1;
my $value;
my $ret = sysread(FH, $value, 10);
close FH;
close(FH);
# only if we have read 4 bytes it's valid
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;
}
@ -78,12 +83,20 @@ sub get_grubonce() # {{{
my $once = int($value);
# 0x4000 is the "magic once flag"
if ($once & 0x4000) {
return $once & ~0x4000;
} else {
print_debug("get_grubonce(): No magic 0x40000.");
unless ($once & 0x4000) {
print_debug("get_grubonce_and_reset_magic(): No magic 0x40000.");
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;
if ($loader =~ m/GRUB/i) {
$default = get_grubonce();
$default = get_grubonce_and_reset_magic();
print_debug("GRUB Default: $default");
}

View 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:

View File

@ -22,33 +22,53 @@ Signed-off-by: Simon Horman <horms@verge.net.au>
Acked-by: Bernhard Walle <bwalle@suse.de>
---
kexec/arch/ppc64/crashdump-ppc64.c | 9 ++++++++-
1 file changed, 8 insertions(+), 1 deletion(-)
kexec/arch/ppc64/crashdump-ppc64.c | 12 ++++++++++--
kexec/arch/ppc64/crashdump-ppc64.h | 3 +++
2 files changed, 13 insertions(+), 2 deletions(-)
--- a/kexec/arch/ppc64/crashdump-ppc64.c
+++ b/kexec/arch/ppc64/crashdump-ppc64.c
@@ -124,7 +124,7 @@ static void exclude_crash_region(uint64_
static int get_dyn_reconf_crash_memory_ranges()
@@ -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(void)
{
uint64_t start, end;
- char fname[128], buf[32];
+ char fname[128], buf[32], flags;
char fname[128], buf[32];
FILE *file;
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;
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)
+ 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))
+ continue;
+
if (start == 0 && end >= (BACKUP_SRC_END + 1))
start = BACKUP_SRC_END + 1;
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 */

View File

@ -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

View File

@ -29,11 +29,12 @@ PreReq: %insserv_prereq %fillup_prereq
AutoReqProv: on
Summary: Tools for fast kernel loading
Version: 2.0.0
Release: 42
Release: 43
Source: %{name}-%{version}.tar.bz2
Source1: kexec-bootloader
Source2: kexec-bootloader.8.txt
Source3: kexec.init
Source4: %{name}-%{version}-rpmlintrc
Patch0: %{name}-ia64-uncached-memory.diff
Patch1: %{name}-ia64-PA.diff
Patch2: %{name}-build-warnings.diff
@ -148,10 +149,18 @@ install -m 0755 kexec.init ${RPM_BUILD_ROOT}/etc/init.d/kexec
%endif
%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
- Check for reserved and assigned bit flags on the memory regions
(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.
* Mon Oct 13 2008 bwalle@suse.de
- 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
* Wed Aug 29 2007 bwalle@suse.de
- 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
* Fri Jul 27 2007 bwalle@suse.de
- update documentation for deleting all dumps (#302257)