Hi Linus,
big sellout for s/390. We have progressed with the common i/o layer rework
to a point where its working fine again. There are some leftovers but
we can fix these later without causing another huge patch. Dependent on
the cio rework are the device drivers. There are patches to get 3215, iucv,
dasd, tape, lcs and ctc working with the new cio layer.
Changes worth noticing:
* Remove the award winning channel device layer ("How to NOT write kernel
driver"). It gets replaced by ccwgroups.
* Overall conversion to the new device model (sysfs).
* CIO is now completly asynchronous and has a proper state machine for
the ccw devices. Channel path verification while the device is up
should work now.
* Clean separation between a subchannel and a ccw device (not every
subchannel is a ccw device).
* Better integration of qdio.
* Rewritten tape device driver.
* Rewritten lcs network driver.
The patch overview:
01: Kconfig and defconfig again. New options: DEBUG_KERNEL, DEBUG_SLAB,
KALLSYMS and DEBUG_SPINLOCK_SLEEP.
02: gcc 3.3 allocates variables that are initialized to zero to the .bss
section instead of .data. This caused some mischief with memory_size
that is detected and stored before .bss is cleared.
03: Add s390 elf relocations to include/linux/elf.h
04: Suppress kern info message about debug levels if DEBUG is off. This
removes quite a lot of unnecessary noise in the boot messages.
05: Adapt s390 backend to changed do_fork call.
06: Add missing include in ptrace.c
07: Documentation changes for the s390 debugging guide.
08: Remove channel device layer.
09: This is the big one: the reworked common i/o layer. I can't see a way
to split this into meaningful parts. It is basically: delete the old
code, add the new code.
10: Add the ccwgroup driver. This is the replacement for chandev and is
surprisingly simple. Grouping is done by echoing a string containing
the subchannels identifiers of a group to an entry in the sysfs.
E.g. for lcs "echo 0:0100,0:0101 > /sysfs/bus/ccwgroup/drivers/lcs/group".
This creates a ccw group with the first subchannel as group leader. The
lcs driver then creates additional attributes in
/sysfs/bus/ccw/devices/0:0100 that are used to configure the lcs device.
Same method is used for ctc but with different attributes. The burden
to find the subchannels which belong to a device is put into the
userspace where it belongs (configure scripts).
11: Update for the documentation about the common io layer.
12: 3215 adaptions for the new channel subsystem interface.
13: sysfs changes for the iucv driver.
14: dasd changes related to the new channel subsystem driver.
15: The rewritten tape device driver.
16: Add cu3088 metadriver. ctc and lcs both use the cu type 3088. To support
these two in the new driver model a metadriver for 3088 subchannels
is introduced. ctc and lcs plug into it to get their subchannels. The
3088 driver just gets all 3088 subchannels for safe-keeping until
ctc or lcs will pick their channels at the time the ccwgroup is created.
17: Convert ctc to the new channel subsystem and 3088 driver.
18: Complete rewrite of the lcs driver. It now uses the new channel subsystem
interface and the 3088 driver. It shrunk a lot and is imho now much
easier to read and understand.
19: Some improvements for the rewritten sclp driver I sent last time.
Most of them are concerned about error recovery.
I keep the finger crossed that everythings applies on the bitkeeper tree.
blue skies,
Martin.
P.S. some of the patches are too big for lkm. I only post the description
file on lkm. If anybody needs the patches just send me a mail and I'll
forward them.
On fre, dec 06, 2002 at 08:11:04 +0100, Martin Schwidefsky wrote:
> P.S. some of the patches are too big for lkm. I only post the description
> file on lkm. If anybody needs the patches just send me a mail and I'll
> forward them.
Privately I sent you some comments about missing FORCE in the
Makefiles. Is it addressed in this set of patches?
Sam
On Friday 06 December 2002 20:11, Martin Schwidefsky wrote:
> P.S. some of the patches are too big for lkm. I only post the description
> file on lkm. If anybody needs the patches just send me a mail and I'll
> forward them.
I have put all the patches on bkbits. Just pull from
http://linux-390.bkbits.net/main
Arnd <><
On fre, dec 06, 2002 at 10:28:12 +0100, Arnd Bergmann wrote:
> I have put all the patches on bkbits. Just pull from
Did that and took a look at the Makefiles.
Here is an update for s390.
They are untested, I did not have any 390 system handy :-)
In arch/s390/boot/Makefile I have added "FORCE" as prerequisite for
listing and image target. Thats the only real bug fixed.
The rest is just cleaning up.
A similar update is required for s390x, but I assume the s390 team will
do that.
Summary of changes:
o Added FORCE prerequisite in boot/Makefile
o Do not use shorthand targets when calling the boot/Makefile
o No longer use BOOT_IMAGE, not needed now
o Use kbuild clean infrastructure when cleaning up in boot
o Offset generation shrinked with one rule
o removed inclusion of Rules.make in all Makefiles
o no longer use the descend macro, use $(Q)$(MAKE) as replacement
Feedback welcome,
Sam
Makefile | 21 +++++++++++----------
boot/Makefile | 25 ++++++++++---------------
kernel/Makefile | 2 --
lib/Makefile | 3 ---
math-emu/Makefile | 8 ++------
mm/Makefile | 2 --
6 files changed, 23 insertions(+), 38 deletions(-)
===== arch/s390/Makefile 1.19 vs edited =====
--- 1.19/arch/s390/Makefile Mon Nov 18 21:11:00 2002
+++ edited/arch/s390/Makefile Sat Dec 7 23:16:49 2002
@@ -27,29 +27,30 @@
drivers-$(CONFIG_MATHEMU) += arch/s390/math-emu/
libs-y += arch/s390/lib/
+
+makeboot =$(Q)$(MAKE) -f script/Makefile.build obj=arch/$(ARCH)/boot $(1)
+
all: image listing
-makeboot = $(call descend,arch/$(ARCH)/boot,$(1))
-BOOTIMAGE= arch/$(ARCH)/boot/image
+listing image: vmlinux
+ $(call makeboot,arch/$(ARCH)/boot/$@)
-listing install image: vmlinux
- +@$(call makeboot,BOOTIMAGE=$(BOOTIMAGE) $@)
+install: vmlinux
+ $(call makeboot, $@)
+archmrproper:
archclean:
- +@$(call makeboot,clean)
+ $(Q)$(MAKE) -f scripts/Makefile.clean obj=arch/$(ARCH)/boot
-archmrproper:
prepare: include/asm-$(ARCH)/offsets.h
arch/$(ARCH)/kernel/asm-offsets.s: include/asm include/linux/version.h \
include/config/MARKER
-include/asm-$(ARCH)/offsets.h.tmp: arch/$(ARCH)/kernel/asm-offsets.s
- @$(generate-asm-offsets.h) < $< > $@
-
-include/asm-$(ARCH)/offsets.h: include/asm-$(ARCH)/offsets.h.tmp
+include/asm-$(ARCH)/offsets.h: arch/$(ARCH)/kernel/asm-offsets.s
@echo -n ' Generating $@'
+ @$(generate-asm-offsets.h) < $< > [email protected]
@$(update-if-changed)
CLEAN_FILES += include/asm-$(ARCH)/offsets.h.tmp \
===== arch/s390/boot/Makefile 1.12 vs edited =====
--- 1.12/arch/s390/boot/Makefile Mon Nov 18 21:11:00 2002
+++ edited/arch/s390/boot/Makefile Sat Dec 7 23:16:52 2002
@@ -2,26 +2,21 @@
# Makefile for the linux s390-specific parts of the memory manager.
#
-EXTRA_AFLAGS := -traditional
+EXTRA_TARGETS := image listing
+EXTRA_AFLAGS := -traditional
-include $(TOPDIR)/Rules.make
-quiet_cmd_listing = OBJDUMP $(echo_target)
-cmd_listing = $(OBJDUMP) --disassemble --disassemble-all \
- --disassemble-zeroes --reloc vmlinux > $@
+quiet_cmd_listing = OBJDUMP $@
+ cmd_listing = $(OBJDUMP) --disassemble --disassemble-all \
+ --disassemble-zeroes --reloc vmlinux > $@
-$(obj)/image: vmlinux
+$(obj)/image: vmlinux FORCE
$(call if_changed,objcopy)
-$(obj)/listing: vmlinux
+$(obj)/listing: vmlinux FORCE
$(call if_changed,listing)
-image: $(obj)/image
-listing: $(obj)/listing
-
-clean:
- rm -f $(obj)/image $(obj)/listing
-
-install: $(CONFIGURE) $(BOOTIMAGE)
- sh -x $(obj)/install.sh $(KERNELRELEASE) $(BOOTIMAGE) System.map Kerntypes "$(INSTALL_PATH)"
+install: $(CONFIGURE) $(obj)/image
+ sh -x $(obj)/install.sh $(KERNELRELEASE) $(obj)/image \
+ System.map Kerntypes "$(INSTALL_PATH)"
===== arch/s390/kernel/Makefile 1.13 vs edited =====
--- 1.13/arch/s390/kernel/Makefile Mon Nov 18 21:11:24 2002
+++ edited/arch/s390/kernel/Makefile Sat Dec 7 23:17:42 2002
@@ -17,5 +17,3 @@
# Kernel debugging
#
obj-$(CONFIG_REMOTE_DEBUG) += gdb-stub.o #gdb-low.o
-
-include $(TOPDIR)/Rules.make
===== arch/s390/lib/Makefile 1.6 vs edited =====
--- 1.6/arch/s390/lib/Makefile Fri Oct 4 18:15:49 2002
+++ edited/arch/s390/lib/Makefile Sat Dec 7 23:19:26 2002
@@ -7,6 +7,3 @@
EXTRA_AFLAGS := -traditional
obj-y = delay.o memset.o strcmp.o strncpy.o uaccess.o
-
-include $(TOPDIR)/Rules.make
-
===== arch/s390/math-emu/Makefile 1.3 vs edited =====
--- 1.3/arch/s390/math-emu/Makefile Mon Sep 23 01:37:56 2002
+++ edited/arch/s390/math-emu/Makefile Sat Dec 7 23:19:09 2002
@@ -4,9 +4,5 @@
obj-$(CONFIG_MATHEMU) := math.o qrnnd.o
-EXTRA_CFLAGS = -I. -I$(TOPDIR)/include/math-emu -w
-EXTRA_AFLAGS := -traditional
-
-include $(TOPDIR)/Rules.make
-
-
+EXTRA_CFLAGS := -I$(src) -Iinclude/math-emu -w
+EXTRA_AFLAGS := -traditional
===== arch/s390/mm/Makefile 1.4 vs edited =====
--- 1.4/arch/s390/mm/Makefile Mon Sep 23 01:37:56 2002
+++ edited/arch/s390/mm/Makefile Sat Dec 7 23:17:13 2002
@@ -3,5 +3,3 @@
#
obj-y := init.o fault.o ioremap.o extable.o
-
-include $(TOPDIR)/Rules.make
On Saturday 07 December 2002 23:30, Sam Ravnborg wrote:
> +makeboot =$(Q)$(MAKE) -f script/Makefile.build obj=arch/$(ARCH)/boot $(1)
^^^^
That needs to be 'scripts', the rest is ok. I'll put it in our tree.
Thanks!
Arnd <><
Hi Sam,
> > I have put all the patches on bkbits. Just pull from
> Did that and took a look at the Makefiles.
> Here is an update for s390.
Makefile magic, how lovely. Arnd said something about "obvious". Oh, well
thanks for the patch. Arnd takes care of it.
blue skies,
Martin
Linux/390 Design & Development, IBM Deutschland Entwicklung GmbH
Sch?naicherstr. 220, D-71032 B?blingen, Telefon: 49 - (0)7031 - 16-2247
E-Mail: [email protected]