[Crash-utility] Crash setup!

Dave Anderson anderson at redhat.com
Tue Oct 7 15:43:23 UTC 2008


> But the /dev/crash driver does require small modifications to the kernel source,
> primarily to EXPORT_SYMBOL_GPL() the page_is_ram() function.

Interesting -- FWIW, the EXPORT_SYMBOL_GPL() requirement for page_is_ram()
may no longer be required if an analogous, static, version of page_is_ram()
were to be written into the crash driver itself -- and that static version
could use the e820_any_mapped() function, which is EXPORT_SYMBOL_GPL() in
the upstream kernel: 

  /*
   * This function checks if any part of the range <start,end> is mapped
   * with type.
   */
  int
  e820_any_mapped(u64 start, u64 end, unsigned type)
  {
          int i;
          for (i = 0; i < e820.nr_map; i++) {
                  const struct e820entry *ei = &e820.map[i];
                  if (type && ei->type != type)
                          continue;
                  if (ei->addr >= end || ei->addr + ei->size <= start)
                          continue;
                  return 1;
          }
          return 0;
  }
  EXPORT_SYMBOL_GPL(e820_any_mapped);

For that matter, e820_any_mapped() is also in RHEL5.  But it was not
in the 2.6.9-based RHEL4 kernel, which was what the RHEL5 version of the
crash driver was based upon.

But RHEL5 also has modified the x86-only page_is_ram() to check for efi_enabled,
and if it's set, to use the "memmap" efi_memory_map instead of the e820 map.
Although, that's not done upstream.

Anyway, just another data point...

Dave

 




More information about the Crash-utility mailing list