Ich hab mal die Fehlermeldungen rausgesucht, es sind doch mehr geworden, als
erwartet:
In der Auflistung unten sind die Fehlermeldungen mit den dazugehörigen
*.rej-Files aufgeführt.
Hoffe irgendjemand kann etwas damit anfangen...
patching file arch/i386/defconfig
Hunk #1 FAILED at 109.
1 out of 1 hunk FAILED -- saving rejects to file arch/i386/defconfig.rej
***************
*** 109,114 ****
CONFIG_BINFMT_MISC=y
CONFIG_PM=y
# CONFIG_APM is not set
#
# Memory Technology Devices (MTD)
--- 109,115 ----
CONFIG_BINFMT_MISC=y
CONFIG_PM=y
# CONFIG_APM is not set
+ # CONFIG_SOFTWARE_SUSPEND is not set
#
# Memory Technology Devices (MTD)
patching file fs/buffer.c
Hunk #1 FAILED at 47.
Hunk #2 FAILED at 2355.
Hunk #3 FAILED at 2385.
Hunk #4 FAILED at 2936.
Hunk #5 FAILED at 2968.
Hunk #6 FAILED at 2989.
Hunk #7 FAILED at 3003.
7 out of 7 hunks FAILED -- saving rejects to file fs/buffer.c.rej
***************
*** 47,52 ****
#include
#include
#include
#include
#include
--- 47,53 ----
#include
#include
#include
+ #include
#include
#include
***************
*** 2354,2365 ****
int brw_page(int rw, struct page *page, kdev_t dev, int b[], int size)
{
struct buffer_head *head, *bh;
if (!PageLocked(page))
panic("brw_page: page not locked for I/O");
- if (!page->buffers)
- create_empty_buffers(page, dev, size);
head = bh = page->buffers;
/* Stage 1: lock all the buffers */
--- 2355,2373 ----
int brw_page(int rw, struct page *page, kdev_t dev, int b[], int size)
{
struct buffer_head *head, *bh;
+ #ifdef CONFIG_SUSPEND
+ int created_buffers = 0;
+ #endif
if (!PageLocked(page))
panic("brw_page: page not locked for I/O");
+ if (!page->buffers) {
+ create_empty_buffers(page, dev, size);
+ #ifdef CONFIG_SUSPEND
+ created_buffers = 1;
+ #endif
+ }
head = bh = page->buffers;
/* Stage 1: lock all the buffers */
***************
*** 2377,2382 ****
submit_bh(rw, bh);
bh = next;
} while (bh != head);
return 0;
}
--- 2385,2396 ----
submit_bh(rw, bh);
bh = next;
} while (bh != head);
+
+ #ifdef CONFIG_SUSPEND
+ if unlikely(suspend_task && created_buffers) // We are in suspend-to-disk
and want to free a new buffer once done.
+ suspend_swap_bh = head;
+ #endif
+
return 0;
}
***************
*** 2922,2927 ****
tsk->session = 1;
tsk->pgrp = 1;
strcpy(tsk->comm, "bdflush");
/* avoid getting signals */
spin_lock_irq(&tsk->sigmask_lock);
--- 2936,2942 ----
tsk->session = 1;
tsk->pgrp = 1;
strcpy(tsk->comm, "bdflush");
+ tsk->flags |= PF_REFRIGERATE;
/* avoid getting signals */
spin_lock_irq(&tsk->sigmask_lock);
***************
*** 2953,2958 ****
break;
ndirty -= NRSYNC;
}
if (ndirty > 0 || bdflush_stop())
interruptible_sleep_on(&bdflush_wait);
}
--- 2968,2975 ----
break;
ndirty -= NRSYNC;
}
+ if (current->flags & PF_FREEZE)
+ refrigerator(PF_IOTHREAD);
if (ndirty > 0 || bdflush_stop())
interruptible_sleep_on(&bdflush_wait);
}
***************
*** 2972,2977 ****
tsk->session = 1;
tsk->pgrp = 1;
strcpy(tsk->comm, "kupdated");
/* sigstop and sigcont will stop and wakeup kupdate */
spin_lock_irq(&tsk->sigmask_lock);
--- 2989,2995 ----
tsk->session = 1;
tsk->pgrp = 1;
strcpy(tsk->comm, "kupdated");
+ tsk->flags |= PF_REFRIGERATE;
/* sigstop and sigcont will stop and wakeup kupdate */
spin_lock_irq(&tsk->sigmask_lock);
***************
*** 2985,2990 ****
for (;;) {
/* update interval */
interval = bdf_prm.b_un.interval;
if (interval) {
tsk->state = TASK_INTERRUPTIBLE;
schedule_timeout(interval);
--- 3003,3010 ----
for (;;) {
/* update interval */
interval = bdf_prm.b_un.interval;
+ if (current->flags & PF_FREEZE)
+ refrigerator(PF_IOTHREAD);
if (interval) {
tsk->state = TASK_INTERRUPTIBLE;
schedule_timeout(interval);
patching file include/linux/mm.h
Hunk #1 FAILED at 298.
Hunk #2 FAILED at 320.
Hunk #3 succeeded at 447 with fuzz 2 (offset 20 lines).
Hunk #4 FAILED at 646.
3 out of 4 hunks FAILED -- saving rejects to file include/linux/mm.h.rej
***************
*** 298,303 ****
#define PG_reserved 14
#define PG_launder 15 /* written out by VM pressure.. */
#define PG_fs_1 16 /* Filesystem specific */
/* Make it prettier to test the above... */
#define UnlockPage(page) unlock_page(page)
--- 298,308 ----
#define PG_reserved 14
#define PG_launder 15 /* written out by VM pressure.. */
#define PG_fs_1 16 /* Filesystem specific */
+ #define PG_nosave 17 /* swsusp - used to be 16!! */
+ #define PG_free 18 /* swsusp - page is unused - dont rely on outside
swsusp! */
+ #define PG_knowshared 19
+ #define PG_dontcopy 20
+ #define PG_collides 18 /* Reuse during start of resume */
/* Make it prettier to test the above... */
#define UnlockPage(page) unlock_page(page)
***************
*** 315,320 ****
#define PageLaunder(page) test_bit(PG_launder, &(page)->flags)
#define SetPageLaunder(page) set_bit(PG_launder, &(page)->flags)
#define ClearPageLaunder(page) clear_bit(PG_launder, &(page)->flags)
/*
* The zone field is never updated after free_area_init_core()
--- 320,340 ----
#define PageLaunder(page) test_bit(PG_launder, &(page)->flags)
#define SetPageLaunder(page) set_bit(PG_launder, &(page)->flags)
#define ClearPageLaunder(page) clear_bit(PG_launder, &(page)->flags)
+ #define PageNosave(page) test_bit(PG_nosave, &(page)->flags)
+ #define SetPageNosave(page) set_bit(PG_nosave, &(page)->flags)
+ #define ClearPageNosave(page) clear_bit(PG_nosave, &(page)->flags)
+ #define PageFree(page) test_bit(PG_free, &(page)->flags)
+ #define SetPageFree(page) set_bit(PG_free, &(page)->flags)
+ #define ClearPageFree(page) clear_bit(PG_free, &(page)->flags)
+ #define PageKnowshared(page) test_bit(PG_knowshared, &(page)->flags)
+ #define SetPageKnowshared(page) set_bit(PG_knowshared, &(page)->flags)
+ #define ClearPageKnowshared(page) clear_bit(PG_knowshared, &(page)->flags)
+ #define PageDontcopy(page) test_bit(PG_dontcopy, &(page)->flags)
+ #define SetPageDontcopy(page) set_bit(PG_dontcopy, &(page)->flags)
+ #define ClearPageDontcopy(page) clear_bit(PG_dontcopy, &(page)->flags)
+ #define PageCollides(page) test_bit(PG_collides, &(page)->flags)
+ #define SetPageCollides(page) set_bit(PG_collides, &(page)->flags)
+ #define ClearPageCollides(page) clear_bit(PG_collides, &(page)->flags)
/*
* The zone field is never updated after free_area_init_core()
***************
*** 579,584 ****
#define __GFP_IO 0x40 /* Can start low memory physical IO? */
#define __GFP_HIGHIO 0x80 /* Can start high mem physical IO? */
#define __GFP_FS 0x100 /* Can call down to low-level FS? */
#define GFP_NOHIGHIO (__GFP_HIGH | __GFP_WAIT | __GFP_IO)
#define GFP_NOIO (__GFP_HIGH | __GFP_WAIT)
--- 605,612 ----
#define __GFP_IO 0x40 /* Can start low memory physical IO? */
#define __GFP_HIGHIO 0x80 /* Can start high mem physical IO? */
#define __GFP_FS 0x100 /* Can call down to low-level FS? */
+ #define __GFP_FAST 0x200 /* fast return in reschedule if out
+ of page (used in swsusp) */
#define GFP_NOHIGHIO (__GFP_HIGH | __GFP_WAIT | __GFP_IO)
#define GFP_NOIO (__GFP_HIGH | __GFP_WAIT)
patching file include/linux/sched.h
Hunk #1 FAILED at 435.
1 out of 1 hunk FAILED -- saving rejects to file include/linux/sched.h.rej
***************
*** 435,440 ****
#define PF_MEMDIE 0x00001000 /* Killed for out-of-memory */
#define PF_FREE_PAGES 0x00002000 /* per process page freeing */
#define PF_NOIO 0x00004000 /* avoid generating further I/O */
#define PF_USEDFPU 0x00100000 /* task used FPU this quantum (SMP) */
--- 435,444 ----
#define PF_MEMDIE 0x00001000 /* Killed for out-of-memory */
#define PF_FREE_PAGES 0x00002000 /* per process page freeing */
#define PF_NOIO 0x00004000 /* avoid generating further I/O */
+ #define PF_FROZEN 0x00008000 /* frozen for system suspend */
+ #define PF_FREEZE 0x00010000 /* trying to freeze this task for suspend */
+ #define PF_IOTHREAD 0x00020000 /* this thread is needed for doing I/O to
swap */
+ #define PF_REFRIGERATE 0x00040000 /* this task should be frozen when a
suspend occurs */
#define PF_USEDFPU 0x00100000 /* task used FPU this quantum (SMP) */
patching file include/linux/sysctl.h
Hunk #1 FAILED at 124.
1 out of 1 hunk FAILED -- saving rejects to file include/linux/sysctl.h.rej
***************
*** 124,129 ****
KERN_CORE_USES_PID=52, /* int: use core or core.%pid */
KERN_TAINTED=53, /* int: various kernel tainted flags */
KERN_CADPID=54, /* int: PID of the process to notify on CAD */
KERN_CORE_PATTERN=56, /* string: pattern for core-files */
};
--- 124,130 ----
KERN_CORE_USES_PID=52, /* int: use core or core.%pid */
KERN_TAINTED=53, /* int: various kernel tainted flags */
KERN_CADPID=54, /* int: PID of the process to notify on CAD */
+ KERN_SWSUSP=55, /* struct: interface to activate software suspension */
KERN_CORE_PATTERN=56, /* string: pattern for core-files */
};
patching file init/main.c
Hunk #1 FAILED at 27.
Hunk #2 succeeded at 556 with fuzz 2 (offset 21 lines).
1 out of 2 hunks FAILED -- saving rejects to file init/main.c.rej
***************
*** 27,32 ****
#include
#include
#include
#include
#include
--- 27,33 ----
#include
#include
#include
+ #include
#include
#include
patching file kernel/Makefile
Hunk #1 FAILED at 9.
Hunk #2 FAILED at 19.
2 out of 2 hunks FAILED -- saving rejects to file kernel/Makefile.rej
***************
*** 9,15 ****
O_TARGET := kernel.o
- export-objs = signal.o sys.o kmod.o context.o ksyms.o pm.o exec_domain.o
printk.o
obj-y = sched.o dma.o fork.o exec_domain.o panic.o printk.o \
module.o exit.o itimer.o info.o time.o softirq.o resource.o \
--- 9,15 ----
O_TARGET := kernel.o
+ export-objs = signal.o sys.o kmod.o context.o ksyms.o pm.o exec_domain.o
printk.o suspend.o
obj-y = sched.o dma.o fork.o exec_domain.o panic.o printk.o \
module.o exit.o itimer.o info.o time.o softirq.o resource.o \
***************
*** 19,24 ****
obj-$(CONFIG_UID16) += uid16.o
obj-$(CONFIG_MODULES) += ksyms.o
obj-$(CONFIG_PM) += pm.o
ifneq ($(CONFIG_IA64),y)
# According to Alan Modra ,
the -fno-omit-frame-pointer is
--- 19,25 ----
obj-$(CONFIG_UID16) += uid16.o
obj-$(CONFIG_MODULES) += ksyms.o
obj-$(CONFIG_PM) += pm.o
+ obj-$(CONFIG_SOFTWARE_SUSPEND) += suspend.o
ifneq ($(CONFIG_IA64),y)
# According to Alan Modra ,
the -fno-omit-frame-pointer is
patching file kernel/sched.c
Hunk #1 FAILED at 29.
Hunk #2 FAILED at 119.
Hunk #3 FAILED at 636.
3 out of 3 hunks FAILED -- saving rejects to file kernel/sched.c.rej
***************
*** 29,34 ****
#include
#include
#include
#include
#include
--- 29,37 ----
#include
#include
#include
+ #ifdef CONFIG_SOFTWARE_SUSPEND
+ #include
+ #endif
#include
#include
***************
*** 116,127 ****
#define idle_task(cpu) (init_tasks[cpu_number_map(cpu)])
#define can_schedule(p,cpu) \
- ((p)->cpus_runnable & (p)->cpus_allowed & (1UL << cpu))
#else
#define idle_task(cpu) (&init_task)
- #define can_schedule(p,cpu) (1)
#endif
--- 119,130 ----
#define idle_task(cpu) (init_tasks[cpu_number_map(cpu)])
#define can_schedule(p,cpu) \
+ ((!TASK_SUSPENDED(p)) && ((p)->cpus_runnable & (p)->cpus_allowed & (1UL
<< cpu)))
#else
#define idle_task(cpu) (&init_task)
+ #define can_schedule(p,cpu) (!TASK_SUSPENDED(p))
#endif
***************
*** 633,638 ****
sched_data->curr = next;
task_set_cpu(next, this_cpu);
spin_unlock_irq(&runqueue_lock);
if (unlikely(prev == next)) {
/* We won't go through the normal tail, so do this by hand */
--- 636,644 ----
sched_data->curr = next;
task_set_cpu(next, this_cpu);
spin_unlock_irq(&runqueue_lock);
+
+ if (unlikely(TASK_SUSPENDED(next)))
+ printk("Scheduling suspended task %s!\n", next->comm);
if (unlikely(prev == next)) {
/* We won't go through the normal tail, so do this by hand */
patching file kernel/softirq.c
Hunk #1 FAILED at 365.
1 out of 1 hunk FAILED -- saving rejects to file kernel/softirq.c.rej
***************
*** 365,370 ****
daemonize();
current->nice = 19;
sigfillset(¤t->blocked);
/* Migrate to the right CPU */
--- 365,371 ----
daemonize();
current->nice = 19;
+ current->flags |= PF_IOTHREAD;
sigfillset(¤t->blocked);
/* Migrate to the right CPU */
patching file kernel/sysctl.c
Hunk #1 FAILED at 42.
Hunk #2 FAILED at 201.
2 out of 2 hunks FAILED -- saving rejects to file kernel/sysctl.c.rej
***************
*** 42,47 ****
/* External variables not in a header file. */
extern int panic_timeout;
extern int C_A_D;
extern int bdf_prm[], bdflush_min[], bdflush_max[];
extern int sysctl_overcommit_memory;
extern int max_threads;
--- 42,50 ----
/* External variables not in a header file. */
extern int panic_timeout;
extern int C_A_D;
+ #ifdef CONFIG_SOFTWARE_SUSPEND
+ extern int swsusp_state[];
+ #endif
extern int bdf_prm[], bdflush_min[], bdflush_max[];
extern int sysctl_overcommit_memory;
extern int max_threads;
***************
*** 198,203 ****
#endif
{KERN_CTLALTDEL, "ctrl-alt-del", &C_A_D, sizeof(int),
0644, NULL, &proc_dointvec},
{KERN_PRINTK, "printk", &console_loglevel, 4*sizeof(int),
0644, NULL, &proc_dointvec},
#ifdef CONFIG_KMOD
--- 201,210 ----
#endif
{KERN_CTLALTDEL, "ctrl-alt-del", &C_A_D, sizeof(int),
0644, NULL, &proc_dointvec},
+ #ifdef CONFIG_SOFTWARE_SUSPEND
+ {KERN_SWSUSP, "swsusp", &swsusp_state, 5*sizeof(int),
+ 0644, NULL, &proc_dointvec},
+ #endif
{KERN_PRINTK, "printk", &console_loglevel, 4*sizeof(int),
0644, NULL, &proc_dointvec},
#ifdef CONFIG_KMOD
patching file mm/filemap.c
Hunk #2 FAILED at 79.
1 out of 2 hunks FAILED -- saving rejects to file mm/filemap.c.rej
***************
*** 79,84 ****
next->pprev_hash = &page->next_hash;
if (page->buffers)
PAGE_BUG(page);
atomic_inc(&page_cache_size);
}
--- 80,88 ----
next->pprev_hash = &page->next_hash;
if (page->buffers)
PAGE_BUG(page);
+ #ifdef CONFIG_SOFTWARE_SUSPEND
+ last_suspend_cache_page = page;
+ #endif
atomic_inc(&page_cache_size);
}
patching file mm/page_alloc.c
Hunk #1 succeeded at 21 with fuzz 2 (offset 1 line).
Hunk #2 succeeded at 159 with fuzz 1 (offset 61 lines).
Hunk #3 FAILED at 391.
Hunk #4 FAILED at 435.
2 out of 4 hunks FAILED -- saving rejects to file mm/page_alloc.c.rej
***************
*** 391,397 ****
zone_t **zone, * classzone;
struct page * page;
int freed;
-
zone = zonelist->zones;
classzone = *zone;
if (classzone == NULL)
--- 394,402 ----
zone_t **zone, * classzone;
struct page * page;
int freed;
+ #if CONFIG_SOFTWARE_SUSPEND
+ static unsigned int loopcount;
+ #endif
zone = zonelist->zones;
classzone = *zone;
if (classzone == NULL)
***************
*** 435,442 ****
}
/* here we're in the low on memory slow path */
-
rebalance:
if (current->flags & (PF_MEMALLOC | PF_MEMDIE)) {
zone = zonelist->zones;
for (;;) {
--- 440,464 ----
}
/* here we're in the low on memory slow path */
+ #if CONFIG_SOFTWARE_SUSPEND
+ loopcount=0;
+ #endif
rebalance:
+ #ifdef CONFIG_SOFTWARE_SUSPEND
+ if(gfp_mask & __GFP_FAST) {
+ /* when using memeat, we ask for all pages that are really free.
+ 800 calls to reschedule should be sufficient to recall all of them
since
+ when a page can be found, it is after only one reschedule.
+ Actually I consider this as a bug of alloc_pages, since allocating a
+ page should not hang in an endless loop when it is clear that no
+ memory is available (cbd) */
+ loopcount++;
+ //if(!(loopcount%10))
+ // printk("_");
+ if(loopcount > 800)
+ return NULL;
+ }
+ #endif
if (current->flags & (PF_MEMALLOC | PF_MEMDIE)) {
zone = zonelist->zones;
for (;;) {
Subject: Re: [suse-laptop] <no subject>
On Fri, 6 Jun 2003 21:51:21 +0200
"Tobias Mätzig" wrote:
Jedoch habe ich noch 7 Fehlermeldungen bekommen
Problem: Meine Glaskugel ist beim Optiker zur Feinjustage.
Kannst du bitte mal diese ominoesen Fehlermeldungen posten? Nicht deine
Interpretation sondern den GENAUEN Wortlaut der Fehlermeldung. Evtl. ist
dann jemand in der Lage dir zu helfen.