linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* test13-pre3
@ 2000-12-17 21:55 Linus Torvalds
  2000-12-17 23:43 ` test13-pre3 Albert Cranford
                   ` (2 more replies)
  0 siblings, 3 replies; 13+ messages in thread
From: Linus Torvalds @ 2000-12-17 21:55 UTC (permalink / raw)
  To: Kernel Mailing List


The most noticeable part of this is that the run_task_queue fix should
cure the lockup that some people have seen.

The shmfs cleanup should be unnoticeable except to users who use SAP with
huge shared memory segments, where Christoph Rohlands work not only
makes the code much more readable, it should also make it dependable..

		Linus

----

 - pre3:
   - Christian Jullien: smc9194: proper dev_kfree_skb_irq
   - Cort Dougan: new-style PowerPC Makefiles
   - Andrew Morton, Petr Vandrovec: fix run_task_queue
   - Christoph Rohland: shmfs for shared memory handling

 - pre2:
   - Kai Germaschewski: ISDN update (including Makefiles)
   - Jens Axboe: cdrom updates
   - Petr Vandrovec; Matrox G450 support
   - Bill Nottingham: fix FAT32 filesystems on 64-bit platforms
   - David Miller: sparc (and other) Makefile fixup
   - Andrea Arkangeli: alpha SMP TLB context fix (and cleanups)
   - Niels Kristian Bech Jensen: checkconfig, USB warnings
   - Andrew Grover: large ACPI update

 - pre1:
   - me: drop support for old-style Makefiles entirely. Big.
   - me: check b_end_io at the IO submission path
   - me: fix "ptep_mkdirty()" (so that swapoff() works correctly)
   - fix fault case in copy_from_user() with a constant size, where
     ((size & 3) == 3)


-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
Please read the FAQ at http://www.tux.org/lkml/

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: test13-pre3
  2000-12-17 21:55 test13-pre3 Linus Torvalds
@ 2000-12-17 23:43 ` Albert Cranford
  2000-12-18  5:50   ` test13-pre3 woes J Sloan
  2000-12-18  6:00   ` test13-pre3 Peter Samuelson
  2000-12-18 12:58 ` test13-pre3 Maciej W. Rozycki
  2000-12-18 14:34 ` test13-pre3 Christoph Rohland
  2 siblings, 2 replies; 13+ messages in thread
From: Albert Cranford @ 2000-12-17 23:43 UTC (permalink / raw)
  To: Linus Torvalds; +Cc: Kernel Mailing List

With CONFIG_DRM_R128=m
we fail to produce module linux/drivers/char/drm/r128.o
Any thoughts.
Albert

Linus Torvalds wrote:
> 
> The most noticeable part of this is that the run_task_queue fix should
> cure the lockup that some people have seen.
> 
> The shmfs cleanup should be unnoticeable except to users who use SAP with
> huge shared memory segments, where Christoph Rohlands work not only
> makes the code much more readable, it should also make it dependable..
> 
>                 Linus
> 
> ----
> 
>  - pre3:
>    - Christian Jullien: smc9194: proper dev_kfree_skb_irq
>    - Cort Dougan: new-style PowerPC Makefiles
>    - Andrew Morton, Petr Vandrovec: fix run_task_queue
>    - Christoph Rohland: shmfs for shared memory handling
> 

-- 
Albert Cranford Deerfield Beach FL USA
ac9410@bellsouth.net
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
Please read the FAQ at http://www.tux.org/lkml/

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: test13-pre3 woes
  2000-12-17 23:43 ` test13-pre3 Albert Cranford
@ 2000-12-18  5:50   ` J Sloan
  2000-12-18  6:03     ` Niels Kristian Bech Jensen
  2000-12-18  6:00   ` test13-pre3 Peter Samuelson
  1 sibling, 1 reply; 13+ messages in thread
From: J Sloan @ 2000-12-18  5:50 UTC (permalink / raw)
  To: Kernel Mailing List

Similar problem here - with CONFIG_DRM_TDFX=m
I have not gotten a tdfx.o module complied since the
start of the test13-pre series...

So no quake 3 arena unless I want to play at < 1 fps...

:(

jjs

Albert Cranford wrote:

> With CONFIG_DRM_R128=m
> we fail to produce module linux/drivers/char/drm/r128.o

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
Please read the FAQ at http://www.tux.org/lkml/

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: test13-pre3
  2000-12-17 23:43 ` test13-pre3 Albert Cranford
  2000-12-18  5:50   ` test13-pre3 woes J Sloan
@ 2000-12-18  6:00   ` Peter Samuelson
  1 sibling, 0 replies; 13+ messages in thread
From: Peter Samuelson @ 2000-12-18  6:00 UTC (permalink / raw)
  To: Albert Cranford; +Cc: Linus Torvalds, Kernel Mailing List


[Albert Cranford]
> With CONFIG_DRM_R128=m
> we fail to produce module linux/drivers/char/drm/r128.o

He's right.  Linus, please apply.

Peter

--- test13pre3/drivers/char/Makefile.orig	Wed Dec 13 23:56:01 2000
+++ test13pre3/drivers/char/Makefile	Sun Dec 17 23:55:00 2000
@@ -25,6 +25,7 @@
 			misc.o pty.o random.o selection.o serial.o \
 			tty_io.o
 
+mod-subdirs	:=	joystick ftape drm pcmcia
 list-multi	:=	
 
 KEYMAP   =defkeymap.o
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
Please read the FAQ at http://www.tux.org/lkml/

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: test13-pre3 woes
  2000-12-18  5:50   ` test13-pre3 woes J Sloan
@ 2000-12-18  6:03     ` Niels Kristian Bech Jensen
  2000-12-18  8:51       ` J Sloan
  0 siblings, 1 reply; 13+ messages in thread
From: Niels Kristian Bech Jensen @ 2000-12-18  6:03 UTC (permalink / raw)
  To: J Sloan; +Cc: Linux kernel developer's mailing list

On Mon, 18 Dec 2000, J Sloan wrote:

> Similar problem here - with CONFIG_DRM_TDFX=m
> I have not gotten a tdfx.o module complied since the
> start of the test13-pre series...
>
> So no quake 3 arena unless I want to play at < 1 fps...
>
Does this patch fix your problem?

--- test13-pre3/drivers/char/Makefile	Mon Dec 18 01:21:31 2000
+++ linux/drivers/char/Makefile	Mon Dec 18 06:58:06 2000
@@ -16,6 +16,8 @@

 O_TARGET := char.o

+mod-subdirs := drm
+
 obj-y	 += tty_io.o n_tty.o tty_ioctl.o mem.o raw.o pty.o misc.o random.o

 # All of the (potential) objects that export symbols.

-- 
Niels Kristian Bech Jensen -- nkbj@image.dk -- http://www.image.dk/~nkbj/

----------->>  Stop software piracy --- use free software!  <<-----------

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
Please read the FAQ at http://www.tux.org/lkml/

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: test13-pre3 woes
  2000-12-18  6:03     ` Niels Kristian Bech Jensen
@ 2000-12-18  8:51       ` J Sloan
  2000-12-18  9:19         ` Peter Samuelson
  2000-12-20  6:02         ` J Sloan
  0 siblings, 2 replies; 13+ messages in thread
From: J Sloan @ 2000-12-18  8:51 UTC (permalink / raw)
  To: Niels Kristian Bech Jensen; +Cc: Linux kernel developer's mailing list

Niels Kristian Bech Jensen wrote:

> Does this patch fix your problem?
>
> --- test13-pre3/drivers/char/Makefile   Mon Dec 18 01:21:31 2000
> +++ linux/drivers/char/Makefile Mon Dec 18 06:58:06 2000
> @@ -16,6 +16,8 @@
>
>  O_TARGET := char.o
>
> +mod-subdirs := drm
> +
>  obj-y   += tty_io.o n_tty.o tty_ioctl.o mem.o raw.o pty.o misc.o random.o
>

Some progress anyway;

The module now compiles and gets installed -

Unfortunately, attempting to load it does not go well:

/lib/modules/2.4.0-test13-pre3/kernel/drivers/char/drm/tdfx.o: unresolved
symbol
 remap_page_range
/lib/modules/2.4.0-test13-pre3/kernel/drivers/char/drm/tdfx.o: unresolved
symbol
 __wake_up
/lib/modules/2.4.0-test13-pre3/kernel/drivers/char/drm/tdfx.o: unresolved
symbol
 mtrr_add
/lib/modules/2.4.0-test13-pre3/kernel/drivers/char/drm/tdfx.o: unresolved
symbol
 __generic_copy_from_user
/lib/modules/2.4.0-test13-pre3/kernel/drivers/char/drm/tdfx.o: unresolved
symbol
 schedule
/lib/modules/2.4.0-test13-pre3/kernel/drivers/char/drm/tdfx.o: unresolved
symbol
 kmalloc
/lib/modules/2.4.0-test13-pre3/kernel/drivers/char/drm/tdfx.o: unresolved
symbol
 si_meminfo
/lib/modules/2.4.0-test13-pre3/kernel/drivers/char/drm/tdfx.o: unresolved
symbol
 create_proc_entry
/lib/modules/2.4.0-test13-pre3/kernel/drivers/char/drm/tdfx.o: unresolved
symbol
 inter_module_put
/lib/modules/2.4.0-test13-pre3/kernel/drivers/char/drm/tdfx.o: unresolved
symbol
 __get_free_pages
/lib/modules/2.4.0-test13-pre3/kernel/drivers/char/drm/tdfx.o: unresolved
symbol
 boot_cpu_data
/lib/modules/2.4.0-test13-pre3/kernel/drivers/char/drm/tdfx.o: unresolved
symbol
 inter_module_get
/lib/modules/2.4.0-test13-pre3/kernel/drivers/char/drm/tdfx.o: unresolved
symbol
 remove_wait_queue
/lib/modules/2.4.0-test13-pre3/kernel/drivers/char/drm/tdfx.o: unresolved
symbol
 high_memory
/lib/modules/2.4.0-test13-pre3/kernel/drivers/char/drm/tdfx.o: unresolved
symbol
 iounmap
/lib/modules/2.4.0-test13-pre3/kernel/drivers/char/drm/tdfx.o: unresolved
symbol
 free_pages
/lib/modules/2.4.0-test13-pre3/kernel/drivers/char/drm/tdfx.o: unresolved
symbol
 __ioremap
/lib/modules/2.4.0-test13-pre3/kernel/drivers/char/drm/tdfx.o: unresolved
symbol
 del_timer
/lib/modules/2.4.0-test13-pre3/kernel/drivers/char/drm/tdfx.o: unresolved
symbol
 interruptible_sleep_on
/lib/modules/2.4.0-test13-pre3/kernel/drivers/char/drm/tdfx.o: unresolved
symbol
 __pollwait
/lib/modules/2.4.0-test13-pre3/kernel/drivers/char/drm/tdfx.o: unresolved
symbol
 kfree
/lib/modules/2.4.0-test13-pre3/kernel/drivers/char/drm/tdfx.o: unresolved
symbol
 remove_proc_entry
/lib/modules/2.4.0-test13-pre3/kernel/drivers/char/drm/tdfx.o: unresolved
symbol
 pci_find_slot/lib/modules/2.4.0-test13-pre3/kernel/drivers/char/drm/tdfx.o:
unresolved symbol
 kill_fasync
/lib/modules/2.4.0-test13-pre3/kernel/drivers/char/drm/tdfx.o: unresolved
symbol
 fasync_helper
/lib/modules/2.4.0-test13-pre3/kernel/drivers/char/drm/tdfx.o: unresolved
symbol
 add_wait_queue
/lib/modules/2.4.0-test13-pre3/kernel/drivers/char/drm/tdfx.o: unresolved
symbol
 do_mmap_pgoff
/lib/modules/2.4.0-test13-pre3/kernel/drivers/char/drm/tdfx.o: unresolved
symbol
 mem_map
/lib/modules/2.4.0-test13-pre3/kernel/drivers/char/drm/tdfx.o: unresolved
symbol
 sprintf
/lib/modules/2.4.0-test13-pre3/kernel/drivers/char/drm/tdfx.o: unresolved
symbol
 jiffies
/lib/modules/2.4.0-test13-pre3/kernel/drivers/char/drm/tdfx.o: unresolved
symbol
 printk
/lib/modules/2.4.0-test13-pre3/kernel/drivers/char/drm/tdfx.o: unresolved
symbol
 add_timer
/lib/modules/2.4.0-test13-pre3/kernel/drivers/char/drm/tdfx.o: unresolved
symbol
 __generic_copy_to_user
/lib/modules/2.4.0-test13-pre3/kernel/drivers/char/drm/tdfx.o: insmod
/lib/modul
es/2.4.0-test13-pre3/kernel/drivers/char/drm/tdfx.o failed
/lib/modules/2.4.0-test13-pre3/kernel/drivers/char/drm/tdfx.o: insmod tdfx
failed





-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
Please read the FAQ at http://www.tux.org/lkml/

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: test13-pre3 woes
  2000-12-18  8:51       ` J Sloan
@ 2000-12-18  9:19         ` Peter Samuelson
  2000-12-18 14:27           ` Olaf Titz
  2000-12-20  6:02         ` J Sloan
  1 sibling, 1 reply; 13+ messages in thread
From: Peter Samuelson @ 2000-12-18  9:19 UTC (permalink / raw)
  To: J Sloan
  Cc: Niels Kristian Bech Jensen, Linux kernel developer's mailing list


[J Sloan]
> The module now compiles and gets installed -
> Unfortunately, attempting to load it does not go well:
> 
> kernel/drivers/char/drm/tdfx.o: unresolved symbol remap_page_range
> kernel/drivers/char/drm/tdfx.o: unresolved symbol __wake_up
> kernel/drivers/char/drm/tdfx.o: unresolved symbol mtrr_add
> kernel/drivers/char/drm/tdfx.o: unresolved symbol __generic_copy_from_user
> kernel/drivers/char/drm/tdfx.o: unresolved symbol schedule
> kernel/drivers/char/drm/tdfx.o: unresolved symbol kmalloc
> kernel/drivers/char/drm/tdfx.o: unresolved symbol si_meminfo

Those symbols are rather generic and rather important.  Sounds like a
generic module problem.  Do other modules load?  Does your kernel use
MODVERSIONS?  (This module apparently doesn't.)  Are you using a recent
version of modutils?

Puzzled.  Maybe Keith Owens knows something.

Peter
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
Please read the FAQ at http://www.tux.org/lkml/

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: test13-pre3
  2000-12-17 21:55 test13-pre3 Linus Torvalds
  2000-12-17 23:43 ` test13-pre3 Albert Cranford
@ 2000-12-18 12:58 ` Maciej W. Rozycki
  2000-12-18 14:34 ` test13-pre3 Christoph Rohland
  2 siblings, 0 replies; 13+ messages in thread
From: Maciej W. Rozycki @ 2000-12-18 12:58 UTC (permalink / raw)
  To: Linus Torvalds, Ingo Molnar; +Cc: Kernel Mailing List

Hi,

 What is this change about?

diff -u --recursive --new-file v2.4.0-test12/linux/arch/i386/kernel/smpboot.c linux/arch/i386/kernel/smpboot.c
--- v2.4.0-test12/linux/arch/i386/kernel/smpboot.c      Mon Dec 11 17:59:43 2000
+++ linux/arch/i386/kernel/smpboot.c    Thu Dec 14 14:54:40 2000
@@ -694,6 +694,11 @@
 		apic_write_around(APIC_ICR, APIC_DM_STARTUP
 					| (start_eip >> 12));
 
+		/*
+		 * Give the other CPU some time to accept the IPI.
+		 */
+		udelay(300);
+
 		Dprintk("Startup point 1.\n");
 
 		Dprintk("Waiting for send to finish...\n");

There is the following code is just after it, making the above change
just useless garbage:

		timeout = 0;
		do {
			Dprintk("+");
			udelay(100);
			send_status = apic_read(APIC_ICR) & APIC_ICR_BUSY;
		} while (send_status && (timeout++ < 1000));

		/*
		 * Give the other CPU some time to accept the IPI.
		 */
		udelay(200);

If we need 600usecs of delay for certain systems, then why not just make
it like below?

  Maciej

-- 
+  Maciej W. Rozycki, Technical University of Gdansk, Poland   +
+--------------------------------------------------------------+
+        e-mail: macro@ds2.pg.gda.pl, PGP key available        +

patch-2.0.4-test13-pre3-startup_ipi-0
diff -up --recursive --new-file linux-2.4.0-test13-pre3.macro/arch/i386/kernel/smpboot.c linux-2.4.0-test13-pre3/arch/i386/kernel/smpboot.c
--- linux-2.4.0-test13-pre3.macro/arch/i386/kernel/smpboot.c	Mon Dec 18 12:14:10 2000
+++ linux-2.4.0-test13-pre3/arch/i386/kernel/smpboot.c	Mon Dec 18 12:15:49 2000
@@ -694,11 +694,6 @@ static void __init do_boot_cpu (int apic
 		apic_write_around(APIC_ICR, APIC_DM_STARTUP
 					| (start_eip >> 12));
 
-		/*
-		 * Give the other CPU some time to accept the IPI.
-		 */
-		udelay(300);
-
 		Dprintk("Startup point 1.\n");
 
 		Dprintk("Waiting for send to finish...\n");
@@ -712,7 +707,7 @@ static void __init do_boot_cpu (int apic
 		/*
 		 * Give the other CPU some time to accept the IPI.
 		 */
-		udelay(200);
+		udelay(500);
 		/*
 		 * Due to the Pentium erratum 3AP.
 		 */

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
Please read the FAQ at http://www.tux.org/lkml/

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: test13-pre3 woes
  2000-12-18  9:19         ` Peter Samuelson
@ 2000-12-18 14:27           ` Olaf Titz
  2000-12-19  0:01             ` J Sloan
  0 siblings, 1 reply; 13+ messages in thread
From: Olaf Titz @ 2000-12-18 14:27 UTC (permalink / raw)
  To: linux-kernel

In article <20001218031912.E3199@cadcamlab.org> you write:
> [J Sloan]
> > The module now compiles and gets installed -
> > Unfortunately, attempting to load it does not go well:
> >
> > kernel/drivers/char/drm/tdfx.o: unresolved symbol remap_page_range
>...
> Those symbols are rather generic and rather important.  Sounds like a
> generic module problem.  Do other modules load?  Does your kernel use
> MODVERSIONS?  (This module apparently doesn't.)  Are you using a recent
> version of modutils?

The most important question: Did you run "make dep" after doing the patch?

Olaf
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
Please read the FAQ at http://www.tux.org/lkml/

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: test13-pre3
  2000-12-17 21:55 test13-pre3 Linus Torvalds
  2000-12-17 23:43 ` test13-pre3 Albert Cranford
  2000-12-18 12:58 ` test13-pre3 Maciej W. Rozycki
@ 2000-12-18 14:34 ` Christoph Rohland
  2000-12-18 19:24   ` test13-pre3 Christoph Rohland
  2 siblings, 1 reply; 13+ messages in thread
From: Christoph Rohland @ 2000-12-18 14:34 UTC (permalink / raw)
  To: Linus Torvalds; +Cc: Kernel Mailing List

Hi Linus,

On Sun, 17 Dec 2000, Linus Torvalds wrote:
> The shmfs cleanup should be unnoticeable except to users who use SAP
> with huge shared memory segments, where Christoph Rohlands work not
> only makes the code much more readable, it should also make it
> dependable..

 :-)

The appended patch fixes the following:

1) We cannot unlock the page in shmem_writepage on ooswap since
   page_launder will do this later.

2) We should set the inode number of SYSV segments to the (user) shmid
   and not the internal id.

Greetings
		Christoph

diff -uNr 4-13-3/mm/shmem.c c/mm/shmem.c
--- 4-13-3/mm/shmem.c	Mon Dec 18 15:08:32 2000
+++ c/mm/shmem.c	Mon Dec 18 15:13:10 2000
@@ -210,37 +210,39 @@
 {
 	int error;
 	struct shmem_inode_info *info;
-	swp_entry_t *entry;
+	swp_entry_t *entry, swap;
 
 	info = &((struct inode *)page->mapping->host)->u.shmem_i;
 	if (info->locked)
 		return 1;
-	spin_lock(&info->lock);
-	entry = shmem_swp_entry (info, page->index);
-	if (!entry)	/* this had been allocted on page allocation */
-		BUG();
-	error = -EAGAIN;
-	if (entry->val)
-		goto out;
-
 	/*
 	 * 1 means "cannot write out".
 	 * We can't drop dirty pages
 	 * just because we ran out of
 	 * swap.
 	 */
-	error = 1;
-	*entry = __get_swap_page(2);
-	if (!entry->val)
+	swap = __get_swap_page(2);
+	if (!swap.val)
+		return 1;
+
+	spin_lock(&info->lock);
+	entry = shmem_swp_entry (info, page->index);
+	if (!entry)	/* this had been allocted on page allocation */
+		BUG();
+	error = -EAGAIN;
+	if (entry->val) {
+                __swap_free(swap, 2);
 		goto out;
+        }
 
+        *entry = swap;
 	error = 0;
 	/* Remove the from the page cache */
 	lru_cache_del(page);
 	remove_inode_page(page);
 
 	/* Add it to the swap cache */
-	add_to_swap_cache(page,*entry);
+	add_to_swap_cache(page, swap);
 	page_cache_release(page);
 	SetPageDirty(page);
 	info->swapped++;
diff -uNr 4-13-3/ipc/shm.c c/ipc/shm.c
--- 4-13-3/ipc/shm.c	Mon Dec 18 15:08:32 2000
+++ c/ipc/shm.c	Mon Dec 18 15:13:58 2000
@@ -220,7 +220,7 @@
 	shp->shm_segsz = size;
 	shp->id = shm_buildid(id,shp->shm_perm.seq);
 	shp->shm_file = file;
-	file->f_dentry->d_inode->i_ino = id;
+	file->f_dentry->d_inode->i_ino = shp->id;
 	file->f_op = &shm_file_operations;
 	shm_tot += numpages;
 	shm_unlock (id);
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
Please read the FAQ at http://www.tux.org/lkml/

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: test13-pre3
  2000-12-18 14:34 ` test13-pre3 Christoph Rohland
@ 2000-12-18 19:24   ` Christoph Rohland
  0 siblings, 0 replies; 13+ messages in thread
From: Christoph Rohland @ 2000-12-18 19:24 UTC (permalink / raw)
  To: Linus Torvalds; +Cc: Kernel Mailing List

Hi Linus,

On 18 Dec 2000, Christoph Rohland wrote:
> The appended patch fixes the following:
> 
> 1) We cannot unlock the page in shmem_writepage on ooswap since
>    page_launder will do this later.
> 
> 2) We should set the inode number of SYSV segments to the (user)
>    shmid and not the internal id.

And here additionally is the SYSV detach/destroy logic fixed which
(again) left destroyed shm segments hang around :-(

I also cleaned up the list of included files in ipc/shm.c

Greetings
		Christoph


diff -uNr 4-13-3/ipc/shm.c c/ipc/shm.c
--- 4-13-3/ipc/shm.c	Mon Dec 18 15:08:32 2000
+++ c/ipc/shm.c	Mon Dec 18 20:07:21 2000
@@ -15,23 +15,13 @@
  *
  */
 
-#include <linux/config.h>
-#include <linux/module.h>
 #include <linux/malloc.h>
 #include <linux/shm.h>
-#include <linux/swap.h>
-#include <linux/smp_lock.h>
 #include <linux/init.h>
-#include <linux/locks.h>
 #include <linux/file.h>
 #include <linux/mman.h>
-#include <linux/vmalloc.h>
-#include <linux/pagemap.h>
 #include <linux/proc_fs.h>
-#include <linux/highmem.h>
-
 #include <asm/uaccess.h>
-#include <asm/pgtable.h>
 
 #include "util.h"
 
@@ -109,6 +99,7 @@
 		BUG();
 	shp->shm_atim = CURRENT_TIME;
 	shp->shm_lprid = current->pid;
+	shp->shm_nattch++;
 	shm_unlock(id);
 }
 
@@ -123,21 +114,14 @@
  *
  * @shp: struct to free
  *
- * It has to be called with shp and shm_ids.sem locked and will
- * release them
+ * It has to be called with shp and shm_ids.sem locked
  */
 static void shm_destroy (struct shmid_kernel *shp)
 {
-	struct file * file = shp->shm_file;
-
-	shp->shm_file = NULL;
 	shm_tot -= (shp->shm_segsz + PAGE_SIZE - 1) >> PAGE_SHIFT;
-	shm_unlock (shp->id);
 	shm_rmid (shp->id);
+	fput (shp->shm_file);
 	kfree (shp);
-	up (&shm_ids.sem);
-	/* put the file outside the critical path to prevent recursion */
-	fput (file);
 }
 
 /*
@@ -158,10 +142,10 @@
 		BUG();
 	shp->shm_lprid = current->pid;
 	shp->shm_dtim = CURRENT_TIME;
-	if(shp->shm_flags & SHM_DEST &&
-	   file_count (file) == 2) /* shp and the vma have the last
-                                      references*/
-		return shm_destroy (shp);
+	shp->shm_nattch--;
+	if(shp->shm_nattch == 0 &&
+	   shp->shm_flags & SHM_DEST)
+		shm_destroy (shp);
 
 	shm_unlock(id);
 	up (&shm_ids.sem);
@@ -176,7 +160,7 @@
 }
 
 static struct file_operations shm_file_operations = {
-	mmap:		shm_mmap
+	mmap:	shm_mmap
 };
 
 static struct vm_operations_struct shm_vm_ops = {
@@ -218,9 +202,10 @@
 	shp->shm_atim = shp->shm_dtim = 0;
 	shp->shm_ctim = CURRENT_TIME;
 	shp->shm_segsz = size;
+	shp->shm_nattch = 0;
 	shp->id = shm_buildid(id,shp->shm_perm.seq);
 	shp->shm_file = file;
-	file->f_dentry->d_inode->i_ino = id;
+	file->f_dentry->d_inode->i_ino = shp->id;
 	file->f_op = &shm_file_operations;
 	shm_tot += numpages;
 	shm_unlock (id);
@@ -370,15 +355,13 @@
 		struct inode * inode;
 
 		shp = shm_get(i);
-		if(shp == NULL || shp->shm_file == NULL)
+		if(shp == NULL)
 			continue;
 		inode = shp->shm_file->f_dentry->d_inode;
-		down (&inode->i_sem);
-		*rss += inode->i_mapping->nrpages;
 		spin_lock (&inode->u.shmem_i.lock);
+		*rss += inode->i_mapping->nrpages;
 		*swp += inode->u.shmem_i.swapped;
 		spin_unlock (&inode->u.shmem_i.lock);
-		up (&inode->i_sem);
 	}
 }
 
@@ -462,7 +445,7 @@
 		tbuf.shm_ctime	= shp->shm_ctim;
 		tbuf.shm_cpid	= shp->shm_cprid;
 		tbuf.shm_lpid	= shp->shm_lprid;
-		tbuf.shm_nattch	= file_count (shp->shm_file) - 1;
+		tbuf.shm_nattch	= shp->shm_nattch;
 		shm_unlock(shmid);
 		if(copy_shmid_to_user (buf, &tbuf, version))
 			return -EFAULT;
@@ -512,13 +495,12 @@
 			goto out_up;
 		err = shm_checkid(shp, shmid);
 		if (err == 0) {
-			if (file_count (shp->shm_file) == 1) {
+			if (shp->shm_nattch){
+				shp->shm_flags |= SHM_DEST;
+				/* Do not find it any more */
+				shp->shm_perm.key = IPC_PRIVATE;
+			} else
 				shm_destroy (shp);
-				return 0;
-			}
-			shp->shm_flags |= SHM_DEST;
-			/* Do not find it any more */
-			shp->shm_perm.key = IPC_PRIVATE;
 		}
 		/* Unlock */
 		shm_unlock(shmid);
@@ -619,13 +601,23 @@
 		return -EACCES;
 	}
 	file = shp->shm_file;
-	get_file (file);
+	shp->shm_nattch++;
 	shm_unlock(shmid);
 
 	down(&current->mm->mmap_sem);
 	user_addr = (void *) do_mmap (file, addr, file->f_dentry->d_inode->i_size, prot, flags, 0);
 	up(&current->mm->mmap_sem);
-	fput (file);
+
+	down (&shm_ids.sem);
+	if(!(shp = shm_lock(shmid)))
+		BUG();
+	shp->shm_nattch--;
+	if(shp->shm_nattch == 0 &&
+	   shp->shm_flags & SHM_DEST)
+		shm_destroy (shp);
+	shm_unlock(shmid);
+	up (&shm_ids.sem);
+
 	*raddr = (unsigned long) user_addr;
 	err = 0;
 	if (IS_ERR(user_addr))
@@ -684,7 +676,7 @@
 				shp->shm_segsz,
 				shp->shm_cprid,
 				shp->shm_lprid,
-				file_count (shp->shm_file) - 1,
+				shp->shm_nattch,
 				shp->shm_perm.uid,
 				shp->shm_perm.gid,
 				shp->shm_perm.cuid,
diff -uNr 4-13-3/mm/shmem.c c/mm/shmem.c
--- 4-13-3/mm/shmem.c	Mon Dec 18 15:08:32 2000
+++ c/mm/shmem.c	Mon Dec 18 15:13:10 2000
@@ -210,37 +210,39 @@
 {
 	int error;
 	struct shmem_inode_info *info;
-	swp_entry_t *entry;
+	swp_entry_t *entry, swap;
 
 	info = &((struct inode *)page->mapping->host)->u.shmem_i;
 	if (info->locked)
 		return 1;
-	spin_lock(&info->lock);
-	entry = shmem_swp_entry (info, page->index);
-	if (!entry)	/* this had been allocted on page allocation */
-		BUG();
-	error = -EAGAIN;
-	if (entry->val)
-		goto out;
-
 	/*
 	 * 1 means "cannot write out".
 	 * We can't drop dirty pages
 	 * just because we ran out of
 	 * swap.
 	 */
-	error = 1;
-	*entry = __get_swap_page(2);
-	if (!entry->val)
+	swap = __get_swap_page(2);
+	if (!swap.val)
+		return 1;
+
+	spin_lock(&info->lock);
+	entry = shmem_swp_entry (info, page->index);
+	if (!entry)	/* this had been allocted on page allocation */
+		BUG();
+	error = -EAGAIN;
+	if (entry->val) {
+                __swap_free(swap, 2);
 		goto out;
+        }
 
+        *entry = swap;
 	error = 0;
 	/* Remove the from the page cache */
 	lru_cache_del(page);
 	remove_inode_page(page);
 
 	/* Add it to the swap cache */
-	add_to_swap_cache(page,*entry);
+	add_to_swap_cache(page, swap);
 	page_cache_release(page);
 	SetPageDirty(page);
 	info->swapped++;
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
Please read the FAQ at http://www.tux.org/lkml/

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: test13-pre3 woes
  2000-12-18 14:27           ` Olaf Titz
@ 2000-12-19  0:01             ` J Sloan
  0 siblings, 0 replies; 13+ messages in thread
From: J Sloan @ 2000-12-19  0:01 UTC (permalink / raw)
  To: Olaf Titz; +Cc: linux-kernel, Peter Samuelson, Niels Kristian Bech Jensen

Olaf Titz wrote:

> In article <20001218031912.E3199@cadcamlab.org> you write:
> > [J Sloan]
> > >
> > > kernel/drivers/char/drm/tdfx.o: unresolved symbol remap_page_range
> >...
> > Those symbols are rather generic and rather important.  Sounds like a
> > generic module problem.  Do other modules load?

Yes, rtl8139, emu10k are loaded and working fine.

> Does your kernel use
> > MODVERSIONS?

Yes, I have CONFIG_MODVERSIONS=y

> (This module apparently doesn't.)  Are you using a recent
> > version of modutils?

# insmod -V
insmod version 2.3.21
...

> The most important question: Did you run "make dep" after doing the patch?

Yes, after the patch, it was, as always:

make clean
make menuconfig
make dep bzlilo modules modules_install

Same problem with 2.4.0-test13-pre3-ac1 on
my Linux workstation at the office, where the
token ring driver fails as well (olympic.o)

BTW, in my experience to date with kernels from
2.3.36 up to  2.4.0-test-12 it has all worked well.

jjs

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
Please read the FAQ at http://www.tux.org/lkml/

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: test13-pre3 woes
  2000-12-18  8:51       ` J Sloan
  2000-12-18  9:19         ` Peter Samuelson
@ 2000-12-20  6:02         ` J Sloan
  1 sibling, 0 replies; 13+ messages in thread
From: J Sloan @ 2000-12-20  6:02 UTC (permalink / raw)
  To: Kernel Mailing List

The saga continues into test13-pre3-ac3:
(last good tdfx.o was from test12)

# uname -a
Linux jyro.mirai.cx 2.4.0-test13pre3-ac3 #1 Tue Dec 19 21:26:36 PST 2000 i586
unknown

# lsmod
Module                  Size  Used by
iptable_filter          1872   0 (autoclean) (unused)
ip_nat_ftp              3424   0 (unused)
iptable_nat            12672   1 [ip_nat_ftp]
ip_conntrack_ftp        2048   0 (unused)
ip_conntrack           13056   2 [ip_nat_ftp iptable_nat ip_conntrack_ftp]
ip_tables              10624   4 [iptable_filter iptable_nat]
ide-scsi                8096   0
8139too                15024   2 (autoclean)
emu10k1                45248   0

# modprobe tdfx
/lib/modules/2.4.0-test13pre3-ac3/kernel/drivers/char/drm/tdfx.o: unresolved
sym
bol remap_page_range
/lib/modules/2.4.0-test13pre3-ac3/kernel/drivers/char/drm/tdfx.o: unresolved
sym
bol __wake_up
/lib/modules/2.4.0-test13pre3-ac3/kernel/drivers/char/drm/tdfx.o: unresolved
sym
bol mtrr_add
/lib/modules/2.4.0-test13pre3-ac3/kernel/drivers/char/drm/tdfx.o: unresolved
sym
bol __generic_copy_from_user
/lib/modules/2.4.0-test13pre3-ac3/kernel/drivers/char/drm/tdfx.o: unresolved
sym
bol schedule
/lib/modules/2.4.0-test13pre3-ac3/kernel/drivers/char/drm/tdfx.o: unresolved
sym
bol kmalloc
/lib/modules/2.4.0-test13pre3-ac3/kernel/drivers/char/drm/tdfx.o: unresolved
sym
bol si_meminfo
/lib/modules/2.4.0-test13pre3-ac3/kernel/drivers/char/drm/tdfx.o: unresolved
sym
bol create_proc_entry
/lib/modules/2.4.0-test13pre3-ac3/kernel/drivers/char/drm/tdfx.o: unresolved
sym
bol inter_module_put
/lib/modules/2.4.0-test13pre3-ac3/kernel/drivers/char/drm/tdfx.o: unresolved
sym
bol __get_free_pages
/lib/modules/2.4.0-test13pre3-ac3/kernel/drivers/char/drm/tdfx.o: unresolved
sym
bol boot_cpu_data
/lib/modules/2.4.0-test13pre3-ac3/kernel/drivers/char/drm/tdfx.o: unresolved
sym
bol inter_module_get
/lib/modules/2.4.0-test13pre3-ac3/kernel/drivers/char/drm/tdfx.o: unresolved
sym
bol remove_wait_queue
/lib/modules/2.4.0-test13pre3-ac3/kernel/drivers/char/drm/tdfx.o: unresolved
sym
bol high_memory
/lib/modules/2.4.0-test13pre3-ac3/kernel/drivers/char/drm/tdfx.o: unresolved
sym
bol iounmap
/lib/modules/2.4.0-test13pre3-ac3/kernel/drivers/char/drm/tdfx.o: unresolved
sym
bol free_pages
/lib/modules/2.4.0-test13pre3-ac3/kernel/drivers/char/drm/tdfx.o: unresolved
sym
bol __ioremap
/lib/modules/2.4.0-test13pre3-ac3/kernel/drivers/char/drm/tdfx.o: unresolved
sym
bol del_timer
/lib/modules/2.4.0-test13pre3-ac3/kernel/drivers/char/drm/tdfx.o: unresolved
sym
bol interruptible_sleep_on
/lib/modules/2.4.0-test13pre3-ac3/kernel/drivers/char/drm/tdfx.o: unresolved
sym
bol __pollwait
/lib/modules/2.4.0-test13pre3-ac3/kernel/drivers/char/drm/tdfx.o: unresolved
sym
bol kfree
/lib/modules/2.4.0-test13pre3-ac3/kernel/drivers/char/drm/tdfx.o: unresolved
sym
bol remove_proc_entry
/lib/modules/2.4.0-test13pre3-ac3/kernel/drivers/char/drm/tdfx.o: unresolved
sym
bol pci_find_slot
/lib/modules/2.4.0-test13pre3-ac3/kernel/drivers/char/drm/tdfx.o: unresolved
sym
bol kill_fasync
/lib/modules/2.4.0-test13pre3-ac3/kernel/drivers/char/drm/tdfx.o: unresolved
sym
bol fasync_helper
/lib/modules/2.4.0-test13pre3-ac3/kernel/drivers/char/drm/tdfx.o: unresolved
sym
bol add_wait_queue
/lib/modules/2.4.0-test13pre3-ac3/kernel/drivers/char/drm/tdfx.o: unresolved
sym
bol do_mmap_pgoff
/lib/modules/2.4.0-test13pre3-ac3/kernel/drivers/char/drm/tdfx.o: unresolved
sym
bol mem_map
/lib/modules/2.4.0-test13pre3-ac3/kernel/drivers/char/drm/tdfx.o: unresolved
sym
bol sprintf
/lib/modules/2.4.0-test13pre3-ac3/kernel/drivers/char/drm/tdfx.o: unresolved
sym
bol jiffies
/lib/modules/2.4.0-test13pre3-ac3/kernel/drivers/char/drm/tdfx.o: unresolved
sym
bol printk
/lib/modules/2.4.0-test13pre3-ac3/kernel/drivers/char/drm/tdfx.o: unresolved
sym
bol add_timer
/lib/modules/2.4.0-test13pre3-ac3/kernel/drivers/char/drm/tdfx.o: unresolved
sym
bol __generic_copy_to_user
/lib/modules/2.4.0-test13pre3-ac3/kernel/drivers/char/drm/tdfx.o: insmod
/lib/mo
dules/2.4.0-test13pre3-ac3/kernel/drivers/char/drm/tdfx.o failed

Hope this helps -

jjs

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
Please read the FAQ at http://www.tux.org/lkml/

^ permalink raw reply	[flat|nested] 13+ messages in thread

end of thread, other threads:[~2000-12-20  6:32 UTC | newest]

Thread overview: 13+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2000-12-17 21:55 test13-pre3 Linus Torvalds
2000-12-17 23:43 ` test13-pre3 Albert Cranford
2000-12-18  5:50   ` test13-pre3 woes J Sloan
2000-12-18  6:03     ` Niels Kristian Bech Jensen
2000-12-18  8:51       ` J Sloan
2000-12-18  9:19         ` Peter Samuelson
2000-12-18 14:27           ` Olaf Titz
2000-12-19  0:01             ` J Sloan
2000-12-20  6:02         ` J Sloan
2000-12-18  6:00   ` test13-pre3 Peter Samuelson
2000-12-18 12:58 ` test13-pre3 Maciej W. Rozycki
2000-12-18 14:34 ` test13-pre3 Christoph Rohland
2000-12-18 19:24   ` test13-pre3 Christoph Rohland

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).