Skip to contentSkip to conversation

UML - part 1 of 2

PATCH In review Jeff Dike 4 participants 6 messages Jul 22, 2002

Subsystems (4)
lore
Share & tools
lore

Jeff Dike

author
#0 lore raw

PATCH 1/1 UML - part 1 of 2

This patch (against 2.5.27) contains all of the changes to generic code needed by UML:

CREDITS -
Changes my address and adds a UML credit for Lars Brinkoff.

MAINTAINERS -
Adds a UML entry.

Makefile -
When ARCH=um is on the command line to do a UML build, the old value
of ARCH is saved in $(SUBARCH) for the later use of the UML build.

drivers/char/Makefile -
Sets KEYMAP, KEYBD, CONSOLE empty to prevent hardware drivers from
being compiled in.

drivers/net/setup.c -
Backs out a UML hook which leaked into your tree which UML no
longer uses.

include/linux/kernel_stat.h -
Bumps DK_MAX_MAJOR to 99 so that the UML block driver (major 98)
gets stats.

include/linux/linkage.h -
UML needs FASTCALL defined as regparm(3), too.

init/do_mounts.c -
Adds a set of entries to dev_name_struct for the UML block device.

Jeff

CREDITS +2 -1
diff -Naur orig/CREDITS linus/CREDITS
@@ -433,6 +433,7 @@
 E: [email protected]
 W: http://lars.nocrew.org/
 D: dsp56k device driver
+D: ptrace proxy in user mode kernel port
 S: Kopmansg 2
 S: 411 13  Goteborg
 S: Sweden
@@ -725,7 +726,7 @@
 E: [email protected]
 W: http://user-mode-linux.sourceforge.net
 D: User mode kernel port
-S: RR1 Box 67C
+S: 375 Tubbs Hill Rd
 S: Deering NH 03244
 S: USA
 
MAINTAINERS +8 -0
diff -Naur orig/MAINTAINERS linus/MAINTAINERS
@@ -1842,6 +1842,14 @@
 L:	[email protected]
 W:	http://usb.in.tum.de
 S:	Maintained
+
+USER-MODE LINUX
+P:	Jeff Dike
+M:	[email protected]
+L:	[email protected]
+L:	[email protected]
+W:	http://user-mode-linux.sourceforge.net
+S:	Maintained
 	
 USB "USBNET" DRIVER
 P:	David Brownell
Makefile +9 -1
diff -Naur orig/Makefile linus/Makefile
@@ -27,7 +27,15 @@
 
 KERNELRELEASE=$(VERSION).$(PATCHLEVEL).$(SUBLEVEL)$(EXTRAVERSION)
 
-ARCH := $(shell uname -m | sed -e s/i.86/i386/ -e s/sun4u/sparc64/ -e s/arm.*/arm/ -e s/sa110/arm/)
+# SUBARCH tells the usermode build what the underlying arch is.  That is set
+# first, and if a usermode build is happening, the "ARCH=um" on the command
+# line overrides the setting of ARCH below.  If a native build is happening,
+# then ARCH is assigned, getting whatever value it gets normally, and 
+# SUBARCH is subsequently ignored.
+
+SUBARCH := $(shell uname -m | sed -e s/i.86/i386/ -e s/sun4u/sparc64/ -e s/arm.*/arm/ -e s/sa110/arm/)
+ARCH := $(SUBARCH)
+
 KERNELPATH=kernel-$(shell echo $(KERNELRELEASE) | sed -e "s/-//g")
 
 CONFIG_SHELL := $(shell if [ -x "$$BASH" ]; then echo $$BASH; \
drivers/char/Makefile +6 -0
diff -Naur orig/drivers/char/Makefile linus/drivers/char/Makefile
@@ -60,6 +60,12 @@
   endif
 endif
 
+ifeq ($(ARCH),um)
+  KEYMAP   =
+  KEYBD    =
+  CONSOLE  =
+endif
+
 ifeq ($(ARCH),sh)
   KEYMAP   =
   KEYBD    =
drivers/net/setup.c +0 -4
diff -Naur orig/drivers/net/setup.c linus/drivers/net/setup.c
@@ -28,7 +28,6 @@
 extern int lmc_setup(void);
 
 extern int madgemc_probe(void);
-extern int uml_net_probe(void);
 
 /* Pad device name to IFNAMSIZ=16. F.e. __PAD6 is string of 9 zeros. */
 #define __PAD6 "\0\0\0\0\0\0\0\0\0"
@@ -102,9 +101,6 @@
  */  
 #ifdef CONFIG_MADGEMC
 	{madgemc_probe, 0},
-#endif
-#ifdef CONFIG_UML_NET
-	{uml_net_probe, 0},
 #endif
  
 	{NULL, 0},
include/linux/kernel_stat.h +1 -1
diff -Naur orig/include/linux/kernel_stat.h linus/include/linux/kernel_stat.h
@@ -12,7 +12,7 @@
  * used by rstatd/perfmeter
  */
 
-#define DK_MAX_MAJOR 16
+#define DK_MAX_MAJOR 99
 #define DK_MAX_DISK 16
 
 struct kernel_stat {
include/linux/linkage.h +1 -1
diff -Naur orig/include/linux/linkage.h linus/include/linux/linkage.h
@@ -56,7 +56,7 @@
 # define ATTRIB_NORET  __attribute__((noreturn))
 # define NORET_AND     noreturn,
 
-#ifdef __i386__
+#if defined(__i386__) || defined(__arch_um__)
 #define FASTCALL(x)	x __attribute__((regparm(3)))
 #else
 #define FASTCALL(x)	x
init/do_mounts.c +16 -0
diff -Naur orig/init/do_mounts.c linus/init/do_mounts.c
@@ -156,6 +156,22 @@
 	{ "pf",		0x2f00 },
 	{ "apblock", APBLOCK_MAJOR << 8},
 	{ "ddv", DDV_MAJOR << 8},
+ 	{ "ubd0", UBD_MAJOR << 8 | 0 << 4},
+ 	{ "ubda", UBD_MAJOR << 8 | 0 << 4},
+ 	{ "ubd1", UBD_MAJOR << 8 | 1 << 4},
+ 	{ "ubdb", UBD_MAJOR << 8 | 1 << 4},
+ 	{ "ubd2", UBD_MAJOR << 8 | 2 << 4},
+ 	{ "ubdc", UBD_MAJOR << 8 | 2 << 4},
+ 	{ "ubd3", UBD_MAJOR << 8 | 3 << 4},
+ 	{ "ubdd", UBD_MAJOR << 8 | 3 << 4},
+ 	{ "ubd4", UBD_MAJOR << 8 | 4 << 4},
+ 	{ "ubde", UBD_MAJOR << 8 | 4 << 4},
+ 	{ "ubd5", UBD_MAJOR << 8 | 5 << 4},
+ 	{ "ubdf", UBD_MAJOR << 8 | 5 << 4},
+ 	{ "ubd6", UBD_MAJOR << 8 | 6 << 4},
+ 	{ "ubdg", UBD_MAJOR << 8 | 6 << 4},
+ 	{ "ubd7", UBD_MAJOR << 8 | 7 << 4},
+ 	{ "ubdh", UBD_MAJOR << 8 | 7 << 4},
 	{ "jsfd",    JSFD_MAJOR << 8},
 #if defined(CONFIG_ARCH_S390)
 	{ "dasda", (DASD_MAJOR << MINORBITS) },
#1 lore raw
Quoted 2 lines · Jeff Dike

include/linux/linkage.h -
UML needs FASTCALL defined as regparm(3), too.

The fastcall definition should go into an asm/ header instead of such hacks..

the disk accounting stuff is also bogus - instead of wasting ram with huge array it should rather be dynamically-allocated in a per-disk structure..

#2 lore raw
Quoted 9 lines · Christoph Hellwig
Quoted 2 lines · Jeff Dike

include/linux/linkage.h -
UML needs FASTCALL defined as regparm(3), too.

The fastcall definition should go into an asm/ header instead of such hacks..

the disk accounting stuff is also bogus - instead of wasting ram with huge array it should rather be dynamically-allocated in a per-disk structure..

per-disk structures will be there pretty soon - the stuff merged into the tree yesterday is the first part of large series introducing that animal.

#3 lore raw
In reply to Christoph Hellwig
Quoted 11 lines · Christoph Hellwig
Quoted 2 lines · Jeff Dike

include/linux/linkage.h -
UML needs FASTCALL defined as regparm(3), too.

The fastcall definition should go into an asm/ header instead of such hacks..

the disk accounting stuff is also bogus - instead of wasting ram with huge array it should rather be dynamically-allocated in a per-disk structure..

... which the name of is: struct genpart.

author
#4 lore raw
In reply to Christoph Hellwig
Quoted 2 lines · [email protected] said:

The fastcall definition should go into an asm/ header instead of such hacks..

And I'm supposed to fix this as part of the UML patch?

Quoted 3 lines

the disk accounting stuff is also bogus - instead of wasting ram with huge array it should rather be dynamically-allocated in a per-disk structure..

And this too?

Jeff

#5 lore raw
Quoted 5 lines · Jeff Dike
Quoted 2 lines · [email protected] said:

The fastcall definition should go into an asm/ header instead of such hacks..

And I'm supposed to fix this as part of the UML patch?

Yes. as part of the XFS merge preparation I'm also fixing generic kernel issues.

Quoted 5 lines
Quoted 3 lines

the disk accounting stuff is also bogus - instead of wasting ram with huge array it should rather be dynamically-allocated in a per-disk structure..

And this too?

No. but you could just wait for that going in and live without disk statistics for that time.. :)