kernel_optimize_test/drivers
Bernhard Walle 69ac9cd629 sysfs: add /sys/firmware/memmap
This patch adds /sys/firmware/memmap interface that represents the BIOS
(or Firmware) provided memory map. The tree looks like:

    /sys/firmware/memmap/0/start   (hex number)
                           end     (hex number)
                           type    (string)
    ...                 /1/start
                           end
                           type

With the following shell snippet one can print the memory map in the same form
the kernel prints itself when booting on x86 (the E820 map).

  --------- 8< --------------------------
    #!/bin/sh
    cd /sys/firmware/memmap
    for dir in * ; do
        start=$(cat $dir/start)
        end=$(cat $dir/end)
        type=$(cat $dir/type)
        printf "%016x-%016x (%s)\n" $start $[ $end +1] "$type"
    done
  --------- >8 --------------------------

That patch only provides the needed interface:

 1. The sysfs interface.
 2. The structure and enumeration definition.
 3. The function firmware_map_add() and firmware_map_add_early()
    that should be called from architecture code (E820/EFI, for
    example) to add the contents to the interface.

If the kernel is compiled without CONFIG_FIRMWARE_MEMMAP, the interface does
nothing without cluttering the architecture-specific code with #ifdef's.

The purpose of the new interface is kexec: While /proc/iomem represents
the *used* memory map (e.g. modified via kernel parameters like 'memmap'
and 'mem'), the /sys/firmware/memmap tree represents the unmodified memory
map provided via the firmware. So kexec can:

 - use the original memory map for rebooting,
 - use the /proc/iomem for setting up the ELF core headers for kdump
   case that should only represent the memory of the system.

The patch has been tested on i386 and x86_64.

Signed-off-by: Bernhard Walle <bwalle@suse.de>
Acked-by: Greg KH <gregkh@suse.de>
Acked-by: Vivek Goyal <vgoyal@redhat.com>
Cc: kexec@lists.infradead.org
Cc: yhlu.kernel@gmail.com
Signed-off-by: Ingo Molnar <mingo@elte.hu>
2008-07-08 17:55:41 +02:00
..
accessibility
acorn/char
acpi Revert parts of "x86: update mptable" 2008-07-08 11:08:42 +02:00
amba
ata ahci: give another shot at clearing all bits in irq_stat 2008-07-05 13:05:37 -07:00
atm
auxdisplay Miguel Ojeda has moved 2008-07-04 10:40:05 -07:00
base Merge branch 'x86/numa' into x86/devel 2008-07-08 11:59:23 +02:00
block cciss: read config to obtain max outstanding commands per controller 2008-07-04 10:40:09 -07:00
bluetooth
cdrom
char Merge branches 'x86/numa-fixes', 'x86/apic', 'x86/apm', 'x86/bitops', 'x86/build', 'x86/cleanups', 'x86/cpa', 'x86/cpu', 'x86/defconfig', 'x86/gart', 'x86/i8259', 'x86/intel', 'x86/irqstats', 'x86/kconfig', 'x86/ldt', 'x86/mce', 'x86/memtest', 'x86/pat', 'x86/ptemask', 'x86/resumetrace', 'x86/threadinfo', 'x86/timers', 'x86/vdso' and 'x86/xen' into x86/devel 2008-07-08 09:16:56 +02:00
clocksource
connector CONNECTOR: add a proc entry to list connectors 2008-06-27 20:03:24 -07:00
cpufreq
cpuidle
crypto
dca
dio
dma
edac
eisa
firewire firewire: fw-sbp2: fix parsing of logical unit directories 2008-06-27 20:55:00 +02:00
firmware sysfs: add /sys/firmware/memmap 2008-07-08 17:55:41 +02:00
gpio gpio: pca953x (i2c) handles max7310 too 2008-07-04 10:40:06 -07:00
hid
hwmon hdaps: add support for various newer Lenovo thinkpads 2008-07-04 10:40:06 -07:00
i2c I2C: S3C2410: Add MODULE_ALIAS() for s3c2440 device. 2008-07-01 14:30:38 +01:00
ide ide: ide_unregister() locking bugfix 2008-07-05 20:30:51 +02:00
ieee1394 ieee1394: Kconfig menu touch-up 2008-06-19 00:12:36 +02:00
infiniband IB/mthca: Clear ICM pages before handing to FW 2008-06-23 09:29:58 -07:00
input Merge branches 'x86/numa-fixes', 'x86/apic', 'x86/apm', 'x86/bitops', 'x86/build', 'x86/cleanups', 'x86/cpa', 'x86/cpu', 'x86/defconfig', 'x86/gart', 'x86/i8259', 'x86/intel', 'x86/irqstats', 'x86/kconfig', 'x86/ldt', 'x86/mce', 'x86/memtest', 'x86/pat', 'x86/ptemask', 'x86/resumetrace', 'x86/threadinfo', 'x86/timers', 'x86/vdso' and 'x86/xen' into x86/devel 2008-07-08 09:16:56 +02:00
isdn
leds
lguest Merge commit 'v2.6.26-rc8' into x86/xen 2008-06-25 12:16:51 +02:00
macintosh
mca
md Merge git://git.kernel.org/pub/scm/linux/kernel/git/agk/linux-2.6-dm 2008-07-02 18:55:17 -07:00
media V4L/DVB (8178): uvc: Fix compilation breakage for the other drivers, if uvc is selected 2008-07-02 08:58:15 -03:00
memstick
message
mfd
misc
mmc pxamci: fix byte aligned DMA transfers 2008-07-06 10:37:40 -07:00
mtd
net hostap: fix sparse warnings 2008-06-30 15:43:52 -04:00
nubus
of
oprofile
parisc
parport
pci RFC x86: try to remove arch_get_ram_range 2008-07-08 12:48:27 +02:00
pcmcia
pnp
power
ps3
rapidio
rtc rtc-x1205: Fix alarm set 2008-07-04 10:40:05 -07:00
s390
sbus
scsi [SCSI] esp: tidy up target reference counting 2008-06-25 12:36:13 -05:00
serial serial: fix serial_match_port() for dynamic major tty-device numbers 2008-07-04 10:40:04 -07:00
sh
sn
spi spi: fix the read path in spidev 2008-07-04 10:40:08 -07:00
ssb
tc
telephony
thermal thermal: Create CONFIG_THERMAL_HWMON=n 2008-06-25 19:25:42 -04:00
uio
usb Revert "USB: don't explicitly reenable root-hub status interrupts" 2008-07-06 10:27:25 -07:00
video Merge branches 'x86/numa-fixes', 'x86/apic', 'x86/apm', 'x86/bitops', 'x86/build', 'x86/cleanups', 'x86/cpa', 'x86/cpu', 'x86/defconfig', 'x86/gart', 'x86/i8259', 'x86/intel', 'x86/irqstats', 'x86/kconfig', 'x86/ldt', 'x86/mce', 'x86/memtest', 'x86/pat', 'x86/ptemask', 'x86/resumetrace', 'x86/threadinfo', 'x86/timers', 'x86/vdso' and 'x86/xen' into x86/devel 2008-07-08 09:16:56 +02:00
virtio
w1
watchdog Revert "[WATCHDOG] hpwdt: Add CFLAGS to get driver working" 2008-06-24 13:09:26 +00:00
xen xen: Use wmb instead of rmb in xen_evtchn_do_upcall(). 2008-06-20 14:56:30 +02:00
zorro
Kconfig
Makefile