Skip to contentSkip to conversation

s390 update.

DISCUSSION Martin Schwidefsky 3 participants 5 messages Dec 6, 2002 – Dec 8, 2002

Subsystems (2)
lore
Share & tools
lore
#0 lore raw

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.

#1 lore raw
Quoted 3 lines · Martin Schwidefsky

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

#3 lore raw
Quoted 1 line · Arnd Bergmann

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 =====

arch/s390/Makefile +11 -10
@@ -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 =====

arch/s390/boot/Makefile +10 -15
@@ -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 =====

arch/s390/kernel/Makefile +0 -2
@@ -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 =====

arch/s390/lib/Makefile +0 -3
@@ -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 =====

arch/s390/math-emu/Makefile +2 -6
@@ -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 =====

arch/s390/mm/Makefile +0 -2
@@ -3,5 +3,3 @@
 #
 
 obj-y	 := init.o fault.o ioremap.o extable.o
-
-include $(TOPDIR)/Rules.make
#4 lore raw
Quoted 1 line · Sam Ravnborg

+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 <><