prepare kernel 2.6.32 support

SVN-Revision: 19617
This commit is contained in:
Jo-Philipp Wich 2010-02-13 00:37:11 +00:00
parent a243108655
commit e268649a97
8 changed files with 777 additions and 26 deletions

View file

@ -542,15 +542,18 @@ CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
# CONFIG_FB_FOREIGN_ENDIAN is not set # CONFIG_FB_FOREIGN_ENDIAN is not set
# CONFIG_FB_GEODE is not set # CONFIG_FB_GEODE is not set
# CONFIG_FB_GOLDFISH is not set # CONFIG_FB_GOLDFISH is not set
# CONFIG_FB_HGA is not set
# CONFIG_FB_IBM_GXT4500 is not set # CONFIG_FB_IBM_GXT4500 is not set
# CONFIG_FB_IMSTT is not set # CONFIG_FB_IMSTT is not set
# CONFIG_FB is not set # CONFIG_FB is not set
# CONFIG_FB_KYRO is not set # CONFIG_FB_KYRO is not set
# CONFIG_FB_LE80578 is not set
# CONFIG_FB_MACMODES is not set # CONFIG_FB_MACMODES is not set
# CONFIG_FB_MATROX is not set # CONFIG_FB_MATROX is not set
# CONFIG_FB_MB862XX is not set # CONFIG_FB_MB862XX is not set
# CONFIG_FB_METRONOME is not set # CONFIG_FB_METRONOME is not set
# CONFIG_FB_MODE_HELPERS is not set # CONFIG_FB_MODE_HELPERS is not set
# CONFIG_FB_N411 is not set
# CONFIG_FB_NEOMAGIC is not set # CONFIG_FB_NEOMAGIC is not set
# CONFIG_FB_NVIDIA is not set # CONFIG_FB_NVIDIA is not set
# CONFIG_FB_OF is not set # CONFIG_FB_OF is not set
@ -590,6 +593,7 @@ CONFIG_FLATMEM=y
CONFIG_FLAT_NODE_MEM_MAP=y CONFIG_FLAT_NODE_MEM_MAP=y
# CONFIG_FORCEDETH is not set # CONFIG_FORCEDETH is not set
CONFIG_FRAME_WARN=1024 CONFIG_FRAME_WARN=1024
# CONFIG_FRAMEBUFFER_CONSOLE is not set
# CONFIG_FREEZER is not set # CONFIG_FREEZER is not set
# CONFIG_FSCACHE is not set # CONFIG_FSCACHE is not set
CONFIG_FSNOTIFY=y CONFIG_FSNOTIFY=y
@ -1114,6 +1118,7 @@ CONFIG_LOCKD_V4=y
CONFIG_LOG_BUF_SHIFT=14 CONFIG_LOG_BUF_SHIFT=14
# CONFIG_LOGIRUMBLEPAD2_FF is not set # CONFIG_LOGIRUMBLEPAD2_FF is not set
# CONFIG_LOGITECH_FF is not set # CONFIG_LOGITECH_FF is not set
# CONFIG_LOGO is not set
# CONFIG_LSF is not set # CONFIG_LSF is not set
# CONFIG_LSI_ET1011C_PHY is not set # CONFIG_LSI_ET1011C_PHY is not set
# CONFIG_LXT_PHY is not set # CONFIG_LXT_PHY is not set

View file

@ -1,6 +1,6 @@
--- a/fs/binfmt_elf.c --- a/fs/binfmt_elf.c
+++ b/fs/binfmt_elf.c +++ b/fs/binfmt_elf.c
@@ -1193,7 +1193,7 @@ static unsigned long vma_dump_size(struc @@ -1170,7 +1170,7 @@
if (FILTER(ELF_HEADERS) && if (FILTER(ELF_HEADERS) &&
vma->vm_pgoff == 0 && (vma->vm_flags & VM_READ)) { vma->vm_pgoff == 0 && (vma->vm_flags & VM_READ)) {
u32 __user *header = (u32 __user *) vma->vm_start; u32 __user *header = (u32 __user *) vma->vm_start;

View file

@ -7,7 +7,7 @@ Signed-off-by: Felix Fietkau <nbd@openwrt.org>
--- a/include/linux/if_packet.h --- a/include/linux/if_packet.h
+++ b/include/linux/if_packet.h +++ b/include/linux/if_packet.h
@@ -31,6 +31,8 @@ struct sockaddr_ll @@ -31,6 +31,8 @@
/* These ones are invisible by user level */ /* These ones are invisible by user level */
#define PACKET_LOOPBACK 5 /* MC/BRD frame looped back */ #define PACKET_LOOPBACK 5 /* MC/BRD frame looped back */
#define PACKET_FASTROUTE 6 /* Fastrouted frame */ #define PACKET_FASTROUTE 6 /* Fastrouted frame */
@ -16,7 +16,7 @@ Signed-off-by: Felix Fietkau <nbd@openwrt.org>
/* Packet socket options */ /* Packet socket options */
@@ -48,6 +50,7 @@ struct sockaddr_ll @@ -48,6 +50,7 @@
#define PACKET_RESERVE 12 #define PACKET_RESERVE 12
#define PACKET_TX_RING 13 #define PACKET_TX_RING 13
#define PACKET_LOSS 14 #define PACKET_LOSS 14
@ -26,7 +26,7 @@ Signed-off-by: Felix Fietkau <nbd@openwrt.org>
{ {
--- a/net/packet/af_packet.c --- a/net/packet/af_packet.c
+++ b/net/packet/af_packet.c +++ b/net/packet/af_packet.c
@@ -204,6 +204,7 @@ struct packet_sock { @@ -204,6 +204,7 @@
unsigned int tp_reserve; unsigned int tp_reserve;
unsigned int tp_loss:1; unsigned int tp_loss:1;
#endif #endif
@ -34,7 +34,7 @@ Signed-off-by: Felix Fietkau <nbd@openwrt.org>
}; };
struct packet_skb_cb { struct packet_skb_cb {
@@ -342,6 +343,7 @@ static int packet_rcv_spkt(struct sk_buf @@ -342,6 +343,7 @@
{ {
struct sock *sk; struct sock *sk;
struct sockaddr_pkt *spkt; struct sockaddr_pkt *spkt;
@ -42,7 +42,7 @@ Signed-off-by: Felix Fietkau <nbd@openwrt.org>
/* /*
* When we registered the protocol we saved the socket in the data * When we registered the protocol we saved the socket in the data
@@ -349,6 +351,7 @@ static int packet_rcv_spkt(struct sk_buf @@ -349,6 +351,7 @@
*/ */
sk = pt->af_packet_priv; sk = pt->af_packet_priv;
@ -50,7 +50,7 @@ Signed-off-by: Felix Fietkau <nbd@openwrt.org>
/* /*
* Yank back the headers [hope the device set this * Yank back the headers [hope the device set this
@@ -361,7 +364,7 @@ static int packet_rcv_spkt(struct sk_buf @@ -361,7 +364,7 @@
* so that this procedure is noop. * so that this procedure is noop.
*/ */
@ -59,7 +59,7 @@ Signed-off-by: Felix Fietkau <nbd@openwrt.org>
goto out; goto out;
if (dev_net(dev) != sock_net(sk)) if (dev_net(dev) != sock_net(sk))
@@ -545,12 +548,12 @@ static int packet_rcv(struct sk_buff *sk @@ -545,12 +548,12 @@
int skb_len = skb->len; int skb_len = skb->len;
unsigned int snaplen, res; unsigned int snaplen, res;
@ -75,7 +75,7 @@ Signed-off-by: Felix Fietkau <nbd@openwrt.org>
if (dev_net(dev) != sock_net(sk)) if (dev_net(dev) != sock_net(sk))
goto drop; goto drop;
@@ -667,12 +670,12 @@ static int tpacket_rcv(struct sk_buff *s @@ -667,12 +670,12 @@
struct timeval tv; struct timeval tv;
struct timespec ts; struct timespec ts;
@ -91,7 +91,7 @@ Signed-off-by: Felix Fietkau <nbd@openwrt.org>
if (dev_net(dev) != sock_net(sk)) if (dev_net(dev) != sock_net(sk))
goto drop; goto drop;
@@ -1381,6 +1384,7 @@ static int packet_create(struct net *net @@ -1390,6 +1393,7 @@
spin_lock_init(&po->bind_lock); spin_lock_init(&po->bind_lock);
mutex_init(&po->pg_vec_lock); mutex_init(&po->pg_vec_lock);
po->prot_hook.func = packet_rcv; po->prot_hook.func = packet_rcv;
@ -99,7 +99,7 @@ Signed-off-by: Felix Fietkau <nbd@openwrt.org>
if (sock->type == SOCK_PACKET) if (sock->type == SOCK_PACKET)
po->prot_hook.func = packet_rcv_spkt; po->prot_hook.func = packet_rcv_spkt;
@@ -1728,6 +1732,16 @@ packet_setsockopt(struct socket *sock, i @@ -1737,6 +1741,16 @@
ret = packet_mc_drop(sk, &mreq); ret = packet_mc_drop(sk, &mreq);
return ret; return ret;
} }
@ -116,7 +116,7 @@ Signed-off-by: Felix Fietkau <nbd@openwrt.org>
#ifdef CONFIG_PACKET_MMAP #ifdef CONFIG_PACKET_MMAP
case PACKET_RX_RING: case PACKET_RX_RING:
@@ -1873,6 +1887,13 @@ static int packet_getsockopt(struct sock @@ -1882,6 +1896,13 @@
data = &val; data = &val;
break; break;

View file

@ -1,6 +1,6 @@
--- a/mm/shmem.c --- a/mm/shmem.c
+++ b/mm/shmem.c +++ b/mm/shmem.c
@@ -2608,6 +2608,16 @@ int shmem_lock(struct file *file, int lo @@ -2608,6 +2608,16 @@
/* common code */ /* common code */
@ -17,7 +17,7 @@
/** /**
* shmem_file_setup - get an unlinked file living in tmpfs * shmem_file_setup - get an unlinked file living in tmpfs
* @name: name for dentry (to be seen in /proc/<pid>/maps * @name: name for dentry (to be seen in /proc/<pid>/maps
@@ -2687,9 +2697,6 @@ int shmem_zero_setup(struct vm_area_stru @@ -2687,9 +2697,6 @@
if (IS_ERR(file)) if (IS_ERR(file))
return PTR_ERR(file); return PTR_ERR(file);
@ -30,7 +30,7 @@
} }
--- a/fs/file.c --- a/fs/file.c
+++ b/fs/file.c +++ b/fs/file.c
@@ -271,6 +271,7 @@ int expand_files(struct files_struct *fi @@ -271,6 +271,7 @@
/* All good, so we try */ /* All good, so we try */
return expand_fdtable(files, nr); return expand_fdtable(files, nr);
} }
@ -40,7 +40,7 @@
{ {
--- a/kernel/exit.c --- a/kernel/exit.c
+++ b/kernel/exit.c +++ b/kernel/exit.c
@@ -507,6 +507,7 @@ struct files_struct *get_files_struct(st @@ -507,6 +507,7 @@
return files; return files;
} }
@ -48,7 +48,7 @@
void put_files_struct(struct files_struct *files) void put_files_struct(struct files_struct *files)
{ {
@@ -526,6 +527,7 @@ void put_files_struct(struct files_struc @@ -526,6 +527,7 @@
free_fdtable(fdt); free_fdtable(fdt);
} }
} }
@ -58,7 +58,7 @@
{ {
--- a/kernel/fork.c --- a/kernel/fork.c
+++ b/kernel/fork.c +++ b/kernel/fork.c
@@ -168,6 +168,7 @@ void __put_task_struct(struct task_struc @@ -168,6 +168,7 @@
if (!profile_handoff_task(tsk)) if (!profile_handoff_task(tsk))
free_task(tsk); free_task(tsk);
} }
@ -68,7 +68,7 @@
* macro override instead of weak attribute alias, to workaround * macro override instead of weak attribute alias, to workaround
--- a/kernel/sched.c --- a/kernel/sched.c
+++ b/kernel/sched.c +++ b/kernel/sched.c
@@ -6093,6 +6093,7 @@ int can_nice(const struct task_struct *p @@ -6093,6 +6093,7 @@
return (nice_rlim <= p->signal->rlim[RLIMIT_NICE].rlim_cur || return (nice_rlim <= p->signal->rlim[RLIMIT_NICE].rlim_cur ||
capable(CAP_SYS_NICE)); capable(CAP_SYS_NICE));
} }
@ -78,7 +78,7 @@
--- a/mm/memory.c --- a/mm/memory.c
+++ b/mm/memory.c +++ b/mm/memory.c
@@ -1100,6 +1100,7 @@ unsigned long zap_page_range(struct vm_a @@ -1100,6 +1100,7 @@
tlb_finish_mmu(tlb, address, end); tlb_finish_mmu(tlb, address, end);
return end; return end;
} }
@ -86,7 +86,7 @@
/** /**
* zap_vma_ptes - remove ptes mapping the vma * zap_vma_ptes - remove ptes mapping the vma
@@ -2486,6 +2487,7 @@ int vmtruncate_range(struct inode *inode @@ -2486,6 +2487,7 @@
return 0; return 0;
} }
@ -96,7 +96,7 @@
* We enter with non-exclusive mmap_sem (to exclude vma changes, * We enter with non-exclusive mmap_sem (to exclude vma changes,
--- a/mm/vmalloc.c --- a/mm/vmalloc.c
+++ b/mm/vmalloc.c +++ b/mm/vmalloc.c
@@ -1111,6 +1111,7 @@ void unmap_kernel_range(unsigned long ad @@ -1172,6 +1172,7 @@
vunmap_page_range(addr, end); vunmap_page_range(addr, end);
flush_tlb_kernel_range(addr, end); flush_tlb_kernel_range(addr, end);
} }
@ -104,7 +104,7 @@
int map_vm_area(struct vm_struct *area, pgprot_t prot, struct page ***pages) int map_vm_area(struct vm_struct *area, pgprot_t prot, struct page ***pages)
{ {
@@ -1226,6 +1227,7 @@ struct vm_struct *get_vm_area(unsigned l @@ -1287,6 +1288,7 @@
return __get_vm_area_node(size, 1, flags, VMALLOC_START, VMALLOC_END, return __get_vm_area_node(size, 1, flags, VMALLOC_START, VMALLOC_END,
-1, GFP_KERNEL, __builtin_return_address(0)); -1, GFP_KERNEL, __builtin_return_address(0));
} }
@ -114,7 +114,7 @@
void *caller) void *caller)
--- a/include/linux/mm.h --- a/include/linux/mm.h
+++ b/include/linux/mm.h +++ b/include/linux/mm.h
@@ -713,6 +713,7 @@ extern void show_free_areas(void); @@ -713,6 +713,7 @@
int shmem_lock(struct file *file, int lock, struct user_struct *user); int shmem_lock(struct file *file, int lock, struct user_struct *user);
struct file *shmem_file_setup(const char *name, loff_t size, unsigned long flags); struct file *shmem_file_setup(const char *name, loff_t size, unsigned long flags);
@ -124,7 +124,7 @@
#ifndef CONFIG_MMU #ifndef CONFIG_MMU
--- a/kernel/signal.c --- a/kernel/signal.c
+++ b/kernel/signal.c +++ b/kernel/signal.c
@@ -1070,6 +1070,7 @@ struct sighand_struct *lock_task_sighand @@ -1070,6 +1070,7 @@
return sighand; return sighand;
} }

View file

@ -1,6 +1,6 @@
--- a/init/main.c --- a/init/main.c
+++ b/init/main.c +++ b/init/main.c
@@ -836,10 +836,7 @@ static noinline int init_post(void) @@ -836,10 +836,7 @@
printk(KERN_WARNING "Failed to execute %s. Attempting " printk(KERN_WARNING "Failed to execute %s. Attempting "
"defaults...\n", execute_command); "defaults...\n", execute_command);
} }

View file

@ -0,0 +1,459 @@
# CONFIG_3C515 is not set
# CONFIG_60XX_WDT is not set
# CONFIG_64BIT is not set
# CONFIG_AC3200 is not set
# CONFIG_ACPI_AC is not set
# CONFIG_ACPI_ASUS is not set
# CONFIG_ACPI_BATTERY is not set
# CONFIG_ACPI_BUTTON is not set
# CONFIG_ACPI_CONTAINER is not set
# CONFIG_ACPI_CUSTOM_DSDT is not set
# CONFIG_ACPI_DEBUG is not set
# CONFIG_ACPI_DOCK is not set
# CONFIG_ACPI_FAN is not set
# CONFIG_ACPI_PCI_SLOT is not set
# CONFIG_ACPI_PROCESSOR_AGGREGATOR is not set
# CONFIG_ACPI_PROCFS is not set
# CONFIG_ACPI_PROCFS_POWER is not set
# CONFIG_ACPI_PROC_EVENT is not set
# CONFIG_ACPI_SBS is not set
# CONFIG_ACPI_TOSHIBA is not set
# CONFIG_ACPI_WMI is not set
# CONFIG_ACQUIRE_WDT is not set
# CONFIG_ADVANTECH_WDT is not set
# CONFIG_ALIM1535_WDT is not set
# CONFIG_APRICOT is not set
# CONFIG_ARCH_PHYS_ADDR_T_64BIT is not set
# CONFIG_ASUS_LAPTOP is not set
# CONFIG_AT1700 is not set
# CONFIG_AUDIT_ARCH is not set
# CONFIG_BLK_DEV_XD is not set
# CONFIG_CC_STACKPROTECTOR is not set
# CONFIG_CMDLINE_BOOL is not set
# CONFIG_CPU5_WDT is not set
# CONFIG_CPU_FREQ_DEBUG is not set
# CONFIG_CPU_FREQ_DEFAULT_GOV_CONSERVATIVE is not set
# CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND is not set
# CONFIG_CPU_FREQ_DEFAULT_GOV_POWERSAVE is not set
# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set
# CONFIG_CPU_FREQ_GOV_CONSERVATIVE is not set
# CONFIG_CPU_FREQ_GOV_ONDEMAND is not set
# CONFIG_CPU_FREQ_GOV_POWERSAVE is not set
# CONFIG_CPU_FREQ_GOV_USERSPACE is not set
# CONFIG_CS5535_GPIO is not set
# CONFIG_CS89x0 is not set
# CONFIG_DCDBAS is not set
# CONFIG_DELL_RBU is not set
# CONFIG_DEPCA is not set
# CONFIG_DMAR is not set
# CONFIG_DMA_API_DEBUG is not set
# CONFIG_DMIID is not set
# CONFIG_EARLY_PRINTK_DBGP is not set
# CONFIG_EDD is not set
# CONFIG_EFI is not set
# CONFIG_EISA is not set
# CONFIG_EL1 is not set
# CONFIG_EL16 is not set
# CONFIG_EL2 is not set
# CONFIG_EL3 is not set
# CONFIG_ELPLUS is not set
# CONFIG_EUROTECH_WDT is not set
# CONFIG_FRAME_POINTER is not set
# CONFIG_GENERIC_CPU is not set
# CONFIG_GENERIC_TIME_VSYSCALL is not set
# CONFIG_HANGCHECK_TIMER is not set
# CONFIG_HAVE_CPUMASK_OF_CPU_MAP is not set
# CONFIG_HIBERNATION is not set
# CONFIG_HIGHMEM4G is not set
# CONFIG_HIGHMEM64G is not set
# CONFIG_HIGH_RES_TIMERS is not set
# CONFIG_HPET_TIMER is not set
# CONFIG_HP_WATCHDOG is not set
# CONFIG_HUGETLBFS is not set
# CONFIG_I6300ESB_WDT is not set
# CONFIG_I8K is not set
# CONFIG_IB700_WDT is not set
# CONFIG_IBMASR is not set
# CONFIG_IMA is not set
# CONFIG_INPUT_YEALINK is not set
# CONFIG_INTEL_MENLOW is not set
# CONFIG_IOMMU_API is not set
# CONFIG_IOMMU_HELPER is not set
# CONFIG_IOMMU_STRESS is not set
# CONFIG_IO_DELAY_0XED is not set
# CONFIG_IO_DELAY_NONE is not set
# CONFIG_IO_DELAY_UDELAY is not set
# CONFIG_ISCSI_IBFT_FIND is not set
# CONFIG_IT8712F_WDT is not set
# CONFIG_IT87_WDT is not set
# CONFIG_ITCO_WDT is not set
# CONFIG_KEYBOARD_LKKBD is not set
# CONFIG_KEYBOARD_NEWTON is not set
# CONFIG_KEYBOARD_STOWAWAY is not set
# CONFIG_KEYBOARD_SUNKBD is not set
# CONFIG_KEYBOARD_XTKBD is not set
# CONFIG_LANCE is not set
# CONFIG_LEDS_ALIX2 is not set
# CONFIG_LEDS_CLEVO_MAIL is not set
# CONFIG_M486 is not set
# CONFIG_M586 is not set
# CONFIG_M586MMX is not set
# CONFIG_M586TSC is not set
# CONFIG_M686 is not set
# CONFIG_MACHZ_WDT is not set
# CONFIG_MATOM is not set
# CONFIG_MCA is not set
# CONFIG_MCORE2 is not set
# CONFIG_MCRUSOE is not set
# CONFIG_MCYRIXIII is not set
# CONFIG_MDA_CONSOLE is not set
# CONFIG_MEFFICEON is not set
# CONFIG_MEMTEST is not set
# CONFIG_MGEODEGX1 is not set
# CONFIG_MGEODE_LX is not set
# CONFIG_MICROCODE_AMD is not set
# CONFIG_MIXCOMWD is not set
# CONFIG_MK6 is not set
# CONFIG_MK7 is not set
# CONFIG_MK8 is not set
# CONFIG_MOUSE_BCM5974 is not set
# CONFIG_MOUSE_PS2_ELANTECH is not set
# CONFIG_MOUSE_PS2_TOUCHKIT is not set
# CONFIG_MOUSE_SERIAL is not set
# CONFIG_MOUSE_VSXXXAA is not set
# CONFIG_MPENTIUM4 is not set
# CONFIG_MPENTIUMII is not set
# CONFIG_MPENTIUMIII is not set
# CONFIG_MPENTIUMM is not set
# CONFIG_MPSC is not set
# CONFIG_MTD_CFI is not set
# CONFIG_MTD_COMPLEX_MAPPINGS is not set
# CONFIG_MTD_TS5500 is not set
# CONFIG_MTRR_SANITIZER is not set
# CONFIG_MVIAC3_2 is not set
# CONFIG_MVIAC7 is not set
# CONFIG_MWINCHIP3D is not set
# CONFIG_MWINCHIPC6 is not set
# CONFIG_NET_NS is not set
# CONFIG_NET_VENDOR_RACAL is not set
# CONFIG_NET_VENDOR_SMC is not set
# CONFIG_NSC_GPIO is not set
# CONFIG_OLPC is not set
# CONFIG_OPTIMIZE_INLINING is not set
# CONFIG_PARAVIRT_GUEST is not set
# CONFIG_PC8736x_GPIO is not set
# CONFIG_PC87413_WDT is not set
# CONFIG_PCIEPORTBUS is not set
# CONFIG_PCI_GOBIOS is not set
# CONFIG_PCI_GODIRECT is not set
# CONFIG_PCI_GOMMCONFIG is not set
# CONFIG_PCI_GOOLPC is not set
# CONFIG_PCWATCHDOG is not set
# CONFIG_PDA_POWER is not set
# CONFIG_PM_DEBUG is not set
# CONFIG_PM_RUNTIME is not set
# CONFIG_PNPBIOS is not set
# CONFIG_POWER_SUPPLY_DEBUG is not set
# CONFIG_PROCESSOR_SELECT is not set
# CONFIG_PROVIDE_OHCI1394_DMA_INIT is not set
# CONFIG_RELOCATABLE is not set
# CONFIG_RWSEM_XCHGADD_ALGORITHM is not set
# CONFIG_SBC7240_WDT is not set
# CONFIG_SBC8360_WDT is not set
# CONFIG_SBC_EPX_C3_WATCHDOG is not set
# CONFIG_SC1200_WDT is not set
# CONFIG_SC520_WDT is not set
# CONFIG_SCHED_HRTICK is not set
# CONFIG_SCSI_LOWLEVEL is not set
# CONFIG_SCx200_GPIO is not set
# CONFIG_SCx200_WDT is not set
# CONFIG_SERIAL_8250_EXTENDED is not set
# CONFIG_SERIO_CT82C710 is not set
# CONFIG_SERIO_PCIPS2 is not set
# CONFIG_SERIO_RAW is not set
# CONFIG_SLAB is not set
# CONFIG_SLUB_DEBUG_ON is not set
# CONFIG_SLUB_STATS is not set
# CONFIG_SMSC37B787_WDT is not set
# CONFIG_SMSC_SCH311X_WDT is not set
# CONFIG_SPARSE_IRQ is not set
# CONFIG_SUSPEND is not set
# CONFIG_TC1100_WMI is not set
# CONFIG_TELCLOCK is not set
# CONFIG_THINKPAD_ACPI is not set
# CONFIG_TOPSTAR_LAPTOP is not set
# CONFIG_TOSHIBA is not set
# CONFIG_TREE_PREEMPT_RCU is not set
# CONFIG_TYPHOON is not set
# CONFIG_USER_NS is not set
# CONFIG_VGACON_SOFT_SCROLLBACK is not set
# CONFIG_VORTEX is not set
# CONFIG_VT_HW_CONSOLE_BINDING is not set
# CONFIG_W83697UG_WDT is not set
# CONFIG_WAFER_WDT is not set
# CONFIG_WDT is not set
# CONFIG_X86_64 is not set
# CONFIG_X86_ACPI_CPUFREQ is not set
# CONFIG_X86_ANCIENT_MCE is not set
# CONFIG_X86_CHECK_BIOS_CORRUPTION is not set
# CONFIG_X86_CMPXCHG is not set
# CONFIG_X86_CPUFREQ_NFORCE2 is not set
# CONFIG_X86_CPUID is not set
# CONFIG_X86_ELAN is not set
# CONFIG_X86_E_POWERSAVER is not set
# CONFIG_X86_GX_SUSPMOD is not set
# CONFIG_X86_LONGHAUL is not set
# CONFIG_X86_LONGRUN is not set
# CONFIG_X86_MCE_INJECT is not set
# CONFIG_X86_MRST is not set
# CONFIG_X86_MSR is not set
# CONFIG_X86_P4_CLOCKMOD is not set
# CONFIG_X86_PAE is not set
# CONFIG_X86_POWERNOW_K6 is not set
# CONFIG_X86_POWERNOW_K7 is not set
# CONFIG_X86_POWERNOW_K8 is not set
# CONFIG_X86_RDC321X is not set
# CONFIG_X86_REBOOTFIXUPS is not set
# CONFIG_X86_SPEEDSTEP_CENTRINO is not set
# CONFIG_X86_SPEEDSTEP_ICH is not set
# CONFIG_X86_SPEEDSTEP_LIB is not set
# CONFIG_X86_SPEEDSTEP_SMI is not set
# CONFIG_ZONE_DMA32 is not set
CONFIG_4KSTACKS=y
CONFIG_ACPI=y
CONFIG_ACPI_BLACKLIST_YEAR=0
CONFIG_ACPI_PROCESSOR=y
CONFIG_ACPI_SYSFS_POWER=y
CONFIG_ACPI_THERMAL=y
CONFIG_ARCH_DEFCONFIG="arch/x86/configs/i386_defconfig"
CONFIG_ARCH_HAS_CACHE_LINE_SIZE=y
CONFIG_ARCH_HAS_CPU_IDLE_WAIT=y
CONFIG_ARCH_HAS_CPU_RELAX=y
CONFIG_ARCH_HAS_DEFAULT_IDLE=y
CONFIG_ARCH_HIBERNATION_POSSIBLE=y
CONFIG_ARCH_MAY_HAVE_PC_FDC=y
CONFIG_ARCH_POPULATES_NODE_MAP=y
CONFIG_ARCH_SELECT_MEMORY_MODEL=y
CONFIG_ARCH_SPARSEMEM_ENABLE=y
CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y
CONFIG_ARCH_SUPPORTS_MEMORY_FAILURE=y
CONFIG_ARCH_SUPPORTS_MSI=y
CONFIG_ARCH_SUPPORTS_OPTIMIZED_INLINING=y
CONFIG_ARCH_SUSPEND_POSSIBLE=y
CONFIG_ARCH_USES_PG_UNCACHED=y
CONFIG_ARCH_WANT_FRAME_POINTERS=y
CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y
CONFIG_ATA=y
CONFIG_ATA_GENERIC=y
CONFIG_ATA_PIIX=y
CONFIG_BINFMT_MISC=y
CONFIG_BITREVERSE=y
CONFIG_BLK_DEV_SD=y
CONFIG_BOUNCE=y
CONFIG_CFG80211_DEFAULT_PS_VALUE=0
CONFIG_CLOCKSOURCE_WATCHDOG=y
CONFIG_COMPAT_VDSO=y
CONFIG_CONSOLE_TRANSLATIONS=y
CONFIG_CPU_FREQ=y
CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y
CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
CONFIG_CPU_FREQ_STAT=y
CONFIG_CPU_FREQ_STAT_DETAILS=y
CONFIG_CPU_FREQ_TABLE=y
CONFIG_CPU_IDLE=y
CONFIG_CPU_IDLE_GOV_LADDER=y
CONFIG_CPU_SUP_AMD=y
CONFIG_CPU_SUP_CENTAUR=y
CONFIG_CPU_SUP_CYRIX_32=y
CONFIG_CPU_SUP_INTEL=y
CONFIG_CPU_SUP_TRANSMETA_32=y
CONFIG_CPU_SUP_UMC_32=y
CONFIG_DEBUG_MEMORY_INIT=y
CONFIG_DECOMPRESS_BZIP2=y
CONFIG_DECOMPRESS_GZIP=y
CONFIG_DECOMPRESS_LZMA=y
CONFIG_DEFAULT_IO_DELAY_TYPE=0
CONFIG_DEVPORT=y
CONFIG_DMI=y
CONFIG_DNOTIFY=y
CONFIG_DOUBLEFAULT=y
CONFIG_DUMMY_CONSOLE=y
CONFIG_EARLY_PRINTK=y
CONFIG_ELF_CORE=y
CONFIG_EXT2_FS=y
CONFIG_FIRMWARE_IN_KERNEL=y
CONFIG_FIRMWARE_MEMMAP=y
CONFIG_FIX_EARLYCON_MEM=y
CONFIG_GENERIC_BUG=y
CONFIG_GENERIC_CLOCKEVENTS=y
CONFIG_GENERIC_CLOCKEVENTS_BROADCAST=y
CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
CONFIG_GENERIC_CMOS_UPDATE=y
CONFIG_GENERIC_FIND_FIRST_BIT=y
CONFIG_GENERIC_FIND_LAST_BIT=y
CONFIG_GENERIC_FIND_NEXT_BIT=y
CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
CONFIG_GENERIC_IOMAP=y
CONFIG_GENERIC_ISA_DMA=y
CONFIG_HAS_DMA=y
CONFIG_HAS_IOMEM=y
CONFIG_HAS_IOPORT=y
CONFIG_HAVE_AOUT=y
CONFIG_HAVE_ARCH_KGDB=y
CONFIG_HAVE_ARCH_KMEMCHECK=y
CONFIG_HAVE_ARCH_TRACEHOOK=y
CONFIG_HAVE_ATOMIC_IOMAP=y
CONFIG_HAVE_DMA_API_DEBUG=y
CONFIG_HAVE_DMA_ATTRS=y
CONFIG_HAVE_DYNAMIC_FTRACE=y
CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y
CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
CONFIG_HAVE_FUNCTION_GRAPH_FP_TEST=y
CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y
CONFIG_HAVE_FUNCTION_TRACER=y
CONFIG_HAVE_FUNCTION_TRACE_MCOUNT_TEST=y
CONFIG_HAVE_GENERIC_DMA_COHERENT=y
CONFIG_HAVE_IDE=y
CONFIG_HAVE_IOREMAP_PROT=y
CONFIG_HAVE_KERNEL_BZIP2=y
CONFIG_HAVE_KERNEL_GZIP=y
CONFIG_HAVE_KERNEL_LZMA=y
CONFIG_HAVE_KERNEL_LZO=y
CONFIG_HAVE_KPROBES=y
CONFIG_HAVE_KRETPROBES=y
CONFIG_HAVE_KVM=y
CONFIG_HAVE_LATENCYTOP_SUPPORT=y
CONFIG_HAVE_MMIOTRACE_SUPPORT=y
CONFIG_HAVE_OPROFILE=y
CONFIG_HAVE_SETUP_PER_CPU_AREA=y
CONFIG_HAVE_SYSCALL_TRACEPOINTS=y
CONFIG_HAVE_UNSTABLE_SCHED_CLOCK=y
CONFIG_HID=y
CONFIG_HID_SUPPORT=y
CONFIG_HPET=y
CONFIG_HPET_MMAP=y
CONFIG_HT_IRQ=y
CONFIG_HW_CONSOLE=y
CONFIG_HW_RANDOM=y
CONFIG_HW_RANDOM_GEODE=y
CONFIG_HW_RANDOM_VIA=y
CONFIG_INITRAMFS_SOURCE=""
CONFIG_INPUT=y
CONFIG_INPUT_KEYBOARD=y
CONFIG_INPUT_MOUSE=y
CONFIG_INPUT_MOUSEDEV=y
CONFIG_INPUT_MOUSEDEV_PSAUX=y
CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
CONFIG_IO_DELAY_0X80=y
CONFIG_IO_DELAY_TYPE_0X80=0
CONFIG_IO_DELAY_TYPE_0XED=1
CONFIG_IO_DELAY_TYPE_NONE=3
CONFIG_IO_DELAY_TYPE_UDELAY=2
CONFIG_ISA=y
CONFIG_ISAPNP=y
CONFIG_ISA_DMA_API=y
CONFIG_KALLSYMS=y
CONFIG_KEXEC=y
CONFIG_KEYBOARD_ATKBD=y
CONFIG_KTIME_SCALAR=y
CONFIG_M386=y
CONFIG_MATH_EMULATION=y
CONFIG_MICROCODE=y
CONFIG_MICROCODE_INTEL=y
CONFIG_MICROCODE_OLD_INTERFACE=y
CONFIG_MOUSE_PS2=y
CONFIG_MOUSE_PS2_ALPS=y
CONFIG_MOUSE_PS2_LIFEBOOK=y
CONFIG_MOUSE_PS2_LOGIPS2PP=y
CONFIG_MOUSE_PS2_SYNAPTICS=y
CONFIG_MOUSE_PS2_TRACKPOINT=y
CONFIG_MTD_BLOCK2MTD=y
CONFIG_MTRR=y
CONFIG_NAMESPACES=y
CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK=y
CONFIG_NEED_PER_CPU_PAGE_FIRST_CHUNK=y
CONFIG_NET_VENDOR_3COM=y
CONFIG_NOHIGHMEM=y
CONFIG_NR_CPUS=1
CONFIG_NVRAM=y
CONFIG_OUTPUT_FORMAT="elf32-i386"
CONFIG_PAGEFLAGS_EXTENDED=y
CONFIG_PAGE_OFFSET=0xC0000000
CONFIG_PATA_AMD=y
CONFIG_PATA_MPIIX=y
CONFIG_PATA_OLDPIIX=y
CONFIG_PATA_SC1200=y
CONFIG_PATA_VIA=y
CONFIG_PCI_BIOS=y
CONFIG_PCI_DIRECT=y
CONFIG_PCI_DOMAINS=y
CONFIG_PCI_GOANY=y
CONFIG_PCI_MMCONFIG=y
CONFIG_PCI_MSI=y
CONFIG_PCSPKR_PLATFORM=y
CONFIG_PHYSICAL_ALIGN=0x100000
CONFIG_PHYSICAL_START=0x1000000
CONFIG_PM=y
CONFIG_PNP=y
CONFIG_PNPACPI=y
CONFIG_PNP_DEBUG_MESSAGES=y
CONFIG_POWER_SUPPLY=y
CONFIG_PROC_PAGE_MONITOR=y
CONFIG_RD_BZIP2=y
CONFIG_RD_GZIP=y
CONFIG_RTC=y
CONFIG_SCHED_OMIT_FRAME_POINTER=y
CONFIG_SCSI=y
CONFIG_SCx200=y
CONFIG_SCx200HR_TIMER=y
CONFIG_SERIAL_8250_PCI=y
CONFIG_SERIAL_8250_PNP=y
CONFIG_SERIO=y
CONFIG_SERIO_I8042=y
CONFIG_SERIO_LIBPS2=y
CONFIG_SERIO_SERPORT=y
CONFIG_SLUB=y
CONFIG_SLUB_DEBUG=y
CONFIG_SPARSEMEM_STATIC=y
CONFIG_STRICT_DEVMEM=y
CONFIG_THERMAL=y
CONFIG_TREE_RCU=y
CONFIG_UID16=y
CONFIG_USB_SUPPORT=y
CONFIG_USER_STACKTRACE_SUPPORT=y
CONFIG_VGA_CONSOLE=y
CONFIG_VM86=y
CONFIG_VM_EVENT_COUNTERS=y
CONFIG_VT=y
CONFIG_VT_CONSOLE=y
CONFIG_X86=y
CONFIG_X86_32=y
CONFIG_X86_32_LAZY_GS=y
CONFIG_X86_CPU=y
CONFIG_X86_EXTENDED_PLATFORM=y
CONFIG_X86_F00F_BUG=y
CONFIG_X86_GENERIC=y
CONFIG_X86_INTEL_USERCOPY=y
CONFIG_X86_INTERNODE_CACHE_BYTES=64
CONFIG_X86_IO_APIC=y
CONFIG_X86_L1_CACHE_BYTES=64
CONFIG_X86_L1_CACHE_SHIFT=4
CONFIG_X86_LOCAL_APIC=y
CONFIG_X86_MCE=y
CONFIG_X86_MCE_AMD=y
CONFIG_X86_MCE_INTEL=y
CONFIG_X86_MCE_THRESHOLD=y
CONFIG_X86_MINIMUM_CPU_FAMILY=3
CONFIG_X86_MPPARSE=y
CONFIG_X86_PAT=y
CONFIG_X86_PLATFORM_DEVICES=y
CONFIG_X86_PM_TIMER=y
CONFIG_X86_PPRO_FENCE=y
CONFIG_X86_REROUTE_FOR_BROKEN_BOOT_IRQS=y
CONFIG_X86_RESERVE_LOW_64K=y
CONFIG_X86_SUPPORTS_MEMORY_FAILURE=y
CONFIG_X86_THERMAL_VECTOR=y
CONFIG_X86_UP_APIC=y
CONFIG_X86_UP_IOAPIC=y
CONFIG_X86_VERBOSE_BOOTUP=y

View file

@ -0,0 +1,213 @@
--- a/drivers/mtd/devices/block2mtd.c
+++ b/drivers/mtd/devices/block2mtd.c
@@ -18,10 +18,18 @@
#include <linux/buffer_head.h>
#include <linux/mutex.h>
#include <linux/mount.h>
+#include <linux/list.h>
+#include <linux/delay.h>
#define ERROR(fmt, args...) printk(KERN_ERR "block2mtd: " fmt "\n" , ## args)
#define INFO(fmt, args...) printk(KERN_INFO "block2mtd: " fmt "\n" , ## args)
+struct retry {
+ struct list_head list;
+ const char *val;
+};
+
+static LIST_HEAD(retry_list);
/* Info for the block device */
struct block2mtd_dev {
@@ -33,10 +41,34 @@
char devname[0];
};
+static int block2mtd_setup2(const char *val);
/* Static info about the MTD, used in cleanup_module */
static LIST_HEAD(blkmtd_device_list);
+static int add_retry(const char *val) {
+ struct retry *r = kmalloc(sizeof(struct retry), GFP_KERNEL);
+
+ INIT_LIST_HEAD(&r->list);
+ r->val = val;
+ list_add(&r->list, &retry_list);
+
+ return 0;
+}
+
+static int __init process_retries(void) {
+ struct list_head *p, *tmp;
+
+ list_for_each_safe(p, tmp, &retry_list) {
+ struct retry *r = list_entry(p, struct retry, list);
+ block2mtd_setup2(r->val);
+ msleep(100);
+ list_del(p);
+ kfree(r);
+ }
+ return 0;
+}
+rootfs_initcall(process_retries);
static struct page *page_read(struct address_space *mapping, int index)
{
@@ -511,7 +543,9 @@
if (token[2] && (strlen(token[2]) + 1 > 80))
parse_err("mtd device name too long");
- add_device(name, erase_size, token[2]);
+ if (add_device(name, erase_size, token[2]) == NULL) {
+ add_retry(val);
+ }
return 0;
}
--- a/include/asm-generic/vmlinux.lds.h
+++ b/include/asm-generic/vmlinux.lds.h
@@ -614,17 +614,24 @@
*(.initcall4s.init) \
*(.initcall5.init) \
*(.initcall5s.init) \
- *(.initcallrootfs.init) \
*(.initcall6.init) \
*(.initcall6s.init) \
*(.initcall7.init) \
*(.initcall7s.init)
+#define INITCALLS_ROOT \
+ *(.initcallrootfs.init)
+
#define INIT_CALLS \
VMLINUX_SYMBOL(__initcall_start) = .; \
INITCALLS \
VMLINUX_SYMBOL(__initcall_end) = .;
+#define INIT_CALLS_ROOT \
+ VMLINUX_SYMBOL(__root_initcall_start) = .; \
+ INITCALLS_ROOT \
+ VMLINUX_SYMBOL(__root_initcall_end) = .;
+
#define CON_INITCALL \
VMLINUX_SYMBOL(__con_initcall_start) = .; \
*(.con_initcall.init) \
@@ -766,6 +773,7 @@
INIT_DATA \
INIT_SETUP(initsetup_align) \
INIT_CALLS \
+ INIT_CALLS_ROOT \
CON_INITCALL \
SECURITY_INITCALL \
INIT_RAM_FS \
--- a/init/do_mounts.c
+++ b/init/do_mounts.c
@@ -176,16 +176,8 @@
return 1;
}
-static unsigned int __initdata root_delay;
-static int __init root_delay_setup(char *str)
-{
- root_delay = simple_strtoul(str, NULL, 0);
- return 1;
-}
-
__setup("rootflags=", root_data_setup);
__setup("rootfstype=", fs_names_setup);
-__setup("rootdelay=", root_delay_setup);
static void __init get_fs_names(char *page)
{
@@ -366,23 +358,6 @@
{
int is_floppy;
- if (root_delay) {
- printk(KERN_INFO "Waiting %dsec before mounting root device...\n",
- root_delay);
- ssleep(root_delay);
- }
-
- /*
- * wait for the known devices to complete their probing
- *
- * Note: this is a potential source of long boot delays.
- * For example, it is not atypical to wait 5 seconds here
- * for the touchpad of a laptop to initialize.
- */
- wait_for_device_probe();
-
- md_run_setup();
-
if (saved_root_name[0]) {
root_device_name = saved_root_name;
if (!strncmp(root_device_name, "mtd", 3) ||
--- a/init/main.c
+++ b/init/main.c
@@ -80,6 +80,7 @@
#ifdef CONFIG_X86_LOCAL_APIC
#include <asm/smp.h>
#endif
+#include "do_mounts.h"
static int kernel_init(void *);
@@ -752,12 +753,13 @@
extern initcall_t __initcall_start[], __initcall_end[], __early_initcall_end[];
+extern initcall_t __root_initcall_start[], __root_initcall_end[];
-static void __init do_initcalls(void)
+static void __init do_initcalls(initcall_t *start, initcall_t *end)
{
initcall_t *call;
- for (call = __early_initcall_end; call < __initcall_end; call++)
+ for (call = start; call < end; call++)
do_one_initcall(*call);
/* Make sure there is no pending stuff from the initcall sequence */
@@ -780,7 +782,7 @@
driver_init();
init_irq_proc();
do_ctors();
- do_initcalls();
+ do_initcalls(__early_initcall_end, __initcall_end);
}
static void __init do_pre_smp_initcalls(void)
@@ -841,6 +843,13 @@
panic("No init found. Try passing init= option to kernel.");
}
+static unsigned int __initdata root_delay;
+static int __init root_delay_setup(char *str)
+{
+ root_delay = simple_strtoul(str, NULL, 0);
+ return 1;
+}
+__setup("rootdelay=", root_delay_setup);
static int __init kernel_init(void * unused)
{
lock_kernel();
@@ -885,7 +894,16 @@
if (sys_access((const char __user *) ramdisk_execute_command, 0) != 0) {
ramdisk_execute_command = NULL;
- prepare_namespace();
+ if (root_delay) {
+ printk(KERN_INFO "Waiting %desc before mounting root device...\n",
+ root_delay);
+ ssleep(root_delay);
+ }
+ while (driver_probe_done() != 0)
+ msleep(100);
+ do_initcalls(__root_initcall_start, __root_initcall_end);
+ md_run_setup();
+ prepare_namespace();
}
/*

View file

@ -0,0 +1,74 @@
# CONFIG_APM is not set
# CONFIG_KERNEL_LZMA is not set
# CONFIG_KVM_CLOCK is not set
# CONFIG_KVM_GUEST is not set
# CONFIG_LGUEST_GUEST is not set
# CONFIG_M386 is not set
# CONFIG_NETWORK_FILESYSTEMS is not set
# CONFIG_PARAVIRT_SPINLOCKS is not set
# CONFIG_PERF_COUNTERS is not set
# CONFIG_PERF_EVENTS is not set
# CONFIG_RWSEM_GENERIC_SPINLOCK is not set
# CONFIG_SCHED_SMT is not set
# CONFIG_VMI is not set
# CONFIG_X86_BIGSMP is not set
# CONFIG_X86_DS is not set
# CONFIG_X86_EXTENDED_PLATFORM is not set
# CONFIG_X86_PLATFORM_DEVICES is not set
# CONFIG_XENFS is not set
# CONFIG_XEN_DEBUG_FS is not set
# CONFIG_XEN_DEV_EVTCHN is not set
# CONFIG_XEN_NETDEV_FRONTEND is not set
CONFIG_ACPI_CONTAINER=y
CONFIG_ACPI_HOTPLUG_CPU=y
CONFIG_ARCH_PHYS_ADDR_T_64BIT=y
CONFIG_FREEZER=y
CONFIG_GENERIC_PENDING_IRQ=y
CONFIG_HAVE_PERF_EVENTS=y
CONFIG_HOTPLUG_CPU=y
CONFIG_HPET_EMULATE_RTC=y
CONFIG_HPET_TIMER=y
CONFIG_HVC_DRIVER=y
CONFIG_HVC_IRQ=y
CONFIG_HVC_XEN=y
CONFIG_KERNEL_GZIP=y
CONFIG_LOCK_KERNEL=y
CONFIG_MPENTIUM4=y
CONFIG_NR_CPUS=2
CONFIG_PARAVIRT=y
CONFIG_PARAVIRT_CLOCK=y
CONFIG_PARAVIRT_GUEST=y
CONFIG_PHYS_ADDR_T_64BIT=y
CONFIG_PM_SLEEP=y
CONFIG_PM_SLEEP_SMP=y
CONFIG_RWSEM_XCHGADD_ALGORITHM=y
CONFIG_SCHED_MC=y
CONFIG_SMP=y
CONFIG_SPARSE_IRQ=y
CONFIG_STOP_MACHINE=y
CONFIG_SYS_HYPERVISOR=y
CONFIG_USE_GENERIC_SMP_HELPERS=y
CONFIG_X86_32_SMP=y
CONFIG_X86_BSWAP=y
CONFIG_X86_CMOV=y
CONFIG_X86_CMPXCHG64=y
CONFIG_X86_CMPXCHG=y
CONFIG_X86_DEBUGCTLMSR=y
CONFIG_X86_HT=y
CONFIG_X86_INVLPG=y
CONFIG_X86_L1_CACHE_SHIFT=7
CONFIG_X86_MINIMUM_CPU_FAMILY=5
CONFIG_X86_PAE=y
CONFIG_X86_POPAD_OK=y
CONFIG_X86_TRAMPOLINE=y
CONFIG_X86_TSC=y
CONFIG_X86_USE_PPRO_CHECKSUM=y
CONFIG_X86_WP_WORKS_OK=y
CONFIG_X86_XADD=y
CONFIG_XEN=y
CONFIG_XEN_BALLOON=y
CONFIG_XEN_BLKDEV_FRONTEND=y
CONFIG_XEN_MAX_DOMAIN_MEMORY=8
CONFIG_XEN_SAVE_RESTORE=y
CONFIG_XEN_SCRUB_PAGES=y
CONFIG_XEN_SYS_HYPERVISOR=y