Skip to contentSkip to conversation

January 8, 2002

STATUS 2.5 Guillaume Boissiere 4 participants 5 messages Jan 8, 2003

lore
Share & tools
lore
#0 lore raw

Of note this week the merge of lm_sensors (drivers for health monitoring hardware) and support for AGP 3.0.
See http://www.kernelnewbies.org/status/ for details.

Also, many more bugs have been entered in bugzilla, mostly compile problems for broken drivers (http://bugzilla.kernel.org/)

-- Guillaume

List of the bugs up for adoption (i.e. noone is working on):
If you want to work on a bug, it is polite to mark it as 'Assigned' so other people know you are working on it.

18  nor  [email protected]  OPEN   Synaptics touchpad driver  
46  nor  [email protected]  OPEN   ide-scsi causing (Two mice: unwanted double-clicks & erra...  
48  nor  [email protected]  OPEN   APM suspend and PCMCIA not cooperating  
49  nor  [email protected]  OPEN   register_console() called in illegal context  
54  nor  [email protected]  OPEN   100% reproduceable "null TTY for (####) in tty_fasync"  
58  nor  [email protected]  OPEN   OHCI-1394: sleeping function called from illegal context ...  
69  nor  [email protected]  OPEN   Framebuffer bug  
72  nor  [email protected]  OPEN   Framebuffer scrolls at the wrong times/places  
79  nor  [email protected]  OPEN   Framebuffer scrolling problem  
93  nor  [email protected]  OPEN   2.5.48 bttv module compile error  
94  nor  [email protected]  OPEN   file remain locked after sapdb process exist.  
104  nor  [email protected]  OPEN   MIPS fails to build: asm/thread_info.h doesn't exist  
110  nor  [email protected]  OPEN   Current bk Linux-2.5, VFS Kernel Panic from Devfs + NO UN...  
115  nor  [email protected]  OPEN   Kernel modules won't load  
122  nor  [email protected]  OPEN   emu10k1 OSS troubles  
126  nor  [email protected]  OPEN   bzImage build failure on input devices support as module  
134  nor  [email protected]  OPEN   2.5.50 breaks pcmcia cards  
135  nor  [email protected]  OPEN   SB16/Alsa doesn't work  
138  nor  [email protected]  OPEN   Build error: drivers/video/sis/sis_main.h:299: parse erro...  
142  low  [email protected]  OPEN   problem with ver_linux script and procps version  
143  nor  [email protected]  OPEN   unable to read cd audio from atapi cdrom/cdrw/dvd device,...  
145  nor  [email protected]  OPEN   ALSA: SB-AWE ISA detection fails  
149  nor  [email protected]  OPEN   Laptop with touchpad and "pointer". Pointer never works  
153  nor  [email protected]  OPEN   compile failure on drivers/char/riscom8.c  
154  nor  [email protected]  OPEN   compile failure on drivers/char/esp.c  
155  nor  [email protected]  OPEN   compile failure on drivers/char/specialix.c  
157  hig  [email protected]  OPEN   Makefile bug? sound/synth/emux/built-in.o  
158  nor  [email protected]  OPEN   depmod should be in README  
159  nor  [email protected]  OPEN   compile failure on drivers/isdn/i4l/isdn_net_lib.c  
160  nor  [email protected]  OPEN   With 2 different nic on one system, dhcp configuration fails  
161  nor  [email protected]  OPEN   VESAfb in 2.5 somehow influences X resolution.  
162  nor  [email protected]  OPEN   compile failure on drivers/media/video/bttv-cards.c  
171  nor  [email protected]  OPEN   2.5.51 at kb driver leaves kb ib state that prevents (sof...  
172  nor  [email protected]  OPEN   tdfxfb.c can't be compiled  
174  nor  [email protected]  OPEN   link failure in function dvb_generic_ioctl: undefined ref...  
179  nor  [email protected]  OPEN   boot from 21 sec/track floppy  
183  nor  [email protected]  OPEN   megaraid driver panics with IBM EXP300 enclosure  
184  nor  [email protected]  OPEN   Unresolved symbols in crypto modules.  
189  nor  [email protected]  OPEN   sscanf in lib/vsprintf.c ignores field width for numeric ...  
191  nor  [email protected]  OPEN   Panic on shutdown  
192  nor  [email protected]  OPEN   loop.c IV calculation is broken since 2.4.x  
193  nor  [email protected]  OPEN   sysrq umount bad ordering (real before loop)  
195  nor  [email protected]  OPEN   compile failure on drivers/media/video/zr36067.c  
196  nor  [email protected]  OPEN   compile failure on drivers/media/video/stradis.c  
197  nor  [email protected]  OPEN   compile failure on drivers/media/video/tda9887.o  
198  nor  [email protected]  OPEN   compile failure on drivers/message/i2o/i2o_lan.c  
199  nor  [email protected]  OPEN   compile failure on drivers/mtd/devices/blkmtd.c  
200  nor  [email protected]  OPEN   compile failure on drivers/mtd/ftl.c  
201  nor  [email protected]  OPEN   compile failure on drivers/net/fc/iph5526.c  
203  nor  [email protected]  OPEN   compile failure on drivers/net/wan/sdlamain.c  
204  nor  [email protected]  OPEN   compile failure on drivers/net/rcpci45.c  
205  low  [email protected]  OPEN   gpm mouse cursor flips chars on framebuffer console  
206  nor  [email protected]  OPEN   broken colors on framebuffer console  
207  blo  [email protected]  OPEN   Cirrus Logic Framebuffer -- Does not compile  
208  nor  [email protected]  OPEN   Build error in aironet4500_core.c  
209  nor  [email protected]  OPEN   Matrox Framebuffer -- Does not compile  
211  nor  [email protected]  OPEN   Mounting a SM/CF reader does not work and does not return  
213  nor  [email protected]  OPEN   compile failure in drivers/scsi/ini9100u.c  
214  nor  [email protected]  OPEN   Incorrect disabling of mate drive  
215  nor  [email protected]  OPEN   compile failure in drivers/scsi/pci2000.c  
216  nor  [email protected]  OPEN   compile failure in drivers/scsi/pci2220i.c  
217  nor  [email protected]  OPEN   compile failure in drivers/scsi/dpt_i2o.c  
218  nor  [email protected]  OPEN   compile failure in drivers/scsi/53c7,8xx.c  
219  nor  [email protected]  OPEN   compile failure in drivers/scsi/tmscsim.c  
220  nor  [email protected]  OPEN   compile failure in drivers/scsi/AM53C974.c  
221  nor  [email protected]  OPEN   compile failure in drivers/scsi/gdth.c  
222  nor  [email protected]  OPEN   compile failure in drivers/scsi/eata_dma.c  
223  nor  [email protected]  OPEN   "usbdevfs is depreciated" message always printed even whe...  
228  low  [email protected]  OPEN   Make pdfdocs/psdocs/htmldoc fail in 2.5.54  
232  nor  [email protected]  OPEN   out of bounds according to stanford checker  
233  nor  [email protected]  OPEN   Out of bounds according to Andy Chou <[email protected]>  
234  nor  [email protected]  OPEN   Out of bounds according to Andy Chou <[email protected]>  
235  nor  [email protected]  OPEN   array out of bound according to Andy Chou <[email protected]...  
236  nor  [email protected]  OPEN   conversion error from Andy Chou <[email protected]>  
237  low  [email protected]  OPEN   buffer out of bounds from Andy Chou <[email protected]>  
238  low  [email protected]  OPEN   buffer out of bounds. From Andy Chou <[email protected]>  
239  low  [email protected]  OPEN   buffer out of bounds from Andy Chou <[email protected]>  
240  low  [email protected]  OPEN   possible off by one error from Andy Chou <[email protected]...  
241  low  [email protected]  OPEN   buffer out of bounds from Andy Chou <[email protected]>  
242  low  [email protected]  OPEN   buffer out of bounds in aha1542.c from Andy Chou <acc@cs....  
243  low  [email protected]  OPEN   possible out of bounds bug from Andy Chou <[email protected]...  
244  low  [email protected]  OPEN   Possible bug from Andy Chou <[email protected]>  
245  low  [email protected]  OPEN   Possible out of bound error in sym53c416.c from Andy Chou...  
246  low  [email protected]  OPEN   Possible missing assert in sym_malloc.c from [email protected]...  
247  low  [email protected]  OPEN   Possible bug in fbgen.c from Stanford Checker  
248  low  [email protected]  OPEN   Possible bug in sstfb.c from Stanford Checker  
249  nor  [email protected]  OPEN   uninitialized pointer in sstfb.c from Stanford Checker  
250  low  [email protected]  OPEN   Possible out of bounds error from Stanford Checker  
252  low  [email protected]  OPEN   Possible out of bounds bug in sb_mixer.c from Stanford Ch...  
253  low  [email protected]  OPEN   another possible out of bounds error in sb_mixer.c from S...  
254  low  [email protected]  OPEN   One more possible out of bounds error in sb_mixer.c from ...  
255  low  [email protected]  OPEN   Possible out of bounds error in ac97_patch.c from Stanfor...  
256  nor  [email protected]  OPEN   3c509.c wants updating to new pnp model  

List of bugs that have been claimed (i.e. someone is working on):

5  nor  [email protected]  ASSI   64GB highmem BUG()  
7  nor  [email protected]  ASSI   file lock accounting broken  
8  low  [email protected]  ASSI   i2o_scsi does not handle reset properly  
9  nor  [email protected]...  ASSI   Ehci do not leave system in a sensible state for bios on ...  
10  hig  [email protected]  ASSI   USB HCs may have improper interrupt configuration with AC...  
14  nor  [email protected]  ASSI   No dri : unsupported Via chipset (device id: 3189)  
15  nor  [email protected]  ASSI   No dma on first hard drive  
16  nor  [email protected]  ASSI   reproduceable oops in lock_get_status  
29  low  [email protected]  ASSI   Debug: sleeping function called from illegal context at m...  
36  nor  [email protected]  ASSI   Long tape rewind causes abort on aic7xxx  
37  nor  [email protected]  ASSI   IDE problems on old pre-PCI HW  
39  nor  [email protected]  ASSI   undefined reference to `boot_gdt_table'  
43  nor  [email protected]  ASSI   e100 drivers crashes on non cache-coherent platforms  
44  blo  [email protected]  ASSI   radeonfb does not compile at all - seems incomplete? or w...  
51  nor  [email protected]  ASSI   isapnp does not register devices in /proc/isapnp  
52  nor  [email protected]  ASSI   aic7xxx driver fails to boot on netfinity 7000  
53  nor  [email protected]  ASSI   IDE cd-rom I/O error  
63  nor  [email protected]  ASSI   compile error with CONFIG_HUGETLB_PAGE yes  
66  blo  [email protected]  ASSI   SMP Kernel Compile for Sparc32 fails  
71  hig  [email protected]  ASSI   RTL8100BL (8139) do not work on acpi UP without local apic  
83  low  [email protected]  ASSI   Wish: ability to quickly cycle through (NEW) config options  
100  nor  [email protected]  ASSI   LTP - gettimeofday02 fails (time is going backwards)  
105  nor  [email protected]  ASSI   gettimeofday cripples system running with notsc  
106  nor  [email protected]  ASSI   sysfs hierarchy can begin to disintegrate  
111  hig  [email protected]  ASSI   hugetlbfs does not align pages  
113  hig  [email protected]  ASSI   CMD649 or ALI15X3 problem under 2.5.49 and since many pre...  
118  blo  [email protected]  ASSI   Load IDE-SCSI module causes OOPS in 2.5.49  
119  nor  [email protected]  ASSI   2.5.49 - Dell Latitude weirdness at shutdown  
123  blo  [email protected]  ASSI   SiL 680 IDE controller has "issues"  
130  hig  [email protected]  ASSI   problems mounting root partition with 2.5.48+ kernels  
131  nor  [email protected]  ASSI   "hda: lost interrupt"; "hda: dma_intr: bad DMA status" on...  
132  nor  [email protected]  ASSI   windows ip check ARP packet replied by kernel when proxy_...  
136  nor  [email protected]  ASSI   FSID returned from statvfs always 0  
140  nor  [email protected]  ASSI   isp1020 driver reports error  
146  low  [email protected]  ASSI   Assertion failure in do_get_write_access() at fs/jbd/tra...  
150  nor  [email protected]  ASSI   [PNP][2.5] IDE Detection problems (wrong IRQ and wrong ID...  
151  nor  [email protected]  ASSI   compile failure on drivers/block/ps2esdi.c  
156  nor  [email protected]  ASSI   compile failure on drivers/ide/pci/nvidia.c  
165  nor  [email protected]  ASSI   Kernel crashes after stop network and remove e100.  
166  nor  [email protected]  ASSI   e100 spits out strange message during startup.  
167  nor  [email protected]  ASSI   compile failure on drivers/media/video/zr36120.c  
168  nor  [email protected]  ASSI   compile failure on drivers/media/video/saa7185.c  
169  nor  [email protected]  ASSI   compile failure on drivers/media/video/bt819.c  
170  low  [email protected]  ASSI   poisoned oops in dump_orphan_list  
185  low  [email protected]  ASSI   mwave init yields: bad: scheduling while atomic!  
188  nor  [email protected]  ASSI   proc_pid_readdir() holds the tasklist_lock for excessive ...  
#1 lore raw

Re: Killing off the boot sector (was: [STATUS 2.5] January 8, 2002)

Followup to:  <3E1C2208.6727.5370CB@localhost>
By author:    "Guillaume Boissiere" <[email protected]>
In newsgroup: linux.dev.kernel
Quoted 4 lines

179 nor [email protected] OPEN boot from 21
sec/track floppy

Can we *please* kill off the stupid in-kernel boot sector? The probing method it uses to determine geometry is unreliable (doesn't work on anything but true legacy floppies, not IDE, not USB, not firewire); it generates these kinds of requests; doesn't handle large-size kernels; hard-codes the use of address 0x90000 which isn't available on all machines; and overall promotes what's fundamentally bad practice.

People keep asking what's the harm in keeping it, and the answer is, quite simply: "because people continue to try to use it."

Here is a patch that guts it to print an error message. It's even tested.

arch/i386/boot/bootsect.S renamed from arch/i386/boot/bootsect.S.dist +30 -358
@@ -4,29 +4,13 @@
  *	modified by Drew Eckhardt
  *	modified by Bruce Evans (bde)
  *	modified by Chris Noe (May 1999) (as86 -> gas)
- *
- * 360k/720k disk support: Andrzej Krzysztofowicz <[email protected]>
+ *	gutted by H. Peter Anvin (Jan 2003)
  *
  * BIG FAT NOTE: We're in real mode using 64k segments.  Therefore segment
  * addresses must be multiplied by 16 to obtain their respective linear
  * addresses. To avoid confusion, linear addresses are written using leading
  * hex while segment addresses are written as segment:offset.
  *
- * bde - should not jump blindly, there may be systems with only 512K low
- * memory.  Use int 0x12 to get the top of memory, etc.
- *
- * It then loads 'setup' directly after itself (0x90200), and the system
- * at 0x10000, using BIOS interrupts. 
- *
- * NOTE! currently system is at most (8*65536-4096) bytes long. This should 
- * be no problem, even in the future. I want to keep it simple. This 508 kB
- * kernel size should be enough, especially as this doesn't contain the
- * buffer cache as in minix (and especially now that the kernel is 
- * compressed :-)
- *
- * The loader has been made as simple as possible, and continuous
- * read errors will result in a unbreakable loop. Reboot by hand. It
- * loads pretty fast by getting whole tracks at a time whenever possible.
  */
 
 #include <asm/boot.h>
@@ -59,359 +43,47 @@
 .global _start
 _start:
 
-# First things first. Move ourself from 0x7C00 -> 0x90000 and jump there.
+	# Normalize the start address
+	jmpl	$BOOTSEG, $start2
 
-	movw	$BOOTSEG, %ax
-	movw	%ax, %ds		# %ds = BOOTSEG
-	movw	$INITSEG, %ax
-	movw	%ax, %es		# %ax = %es = INITSEG
-	movw	$256, %cx
-	subw	%si, %si
-	subw	%di, %di
-	cld
-	rep
-	movsw
-	ljmp	$INITSEG, $go
-
-# bde - changed 0xff00 to 0x4000 to use debugger at 0x6400 up (bde).  We
-# wouldn't have to worry about this if we checked the top of memory.  Also
-# my BIOS can be configured to put the wini drive tables in high memory
-# instead of in the vector table.  The old stack might have clobbered the
-# drive table.
-
-go:	movw	$0x4000-12, %di		# 0x4000 is an arbitrary value >=
-					# length of bootsect + length of
-					# setup + room for stack;
-					# 12 is disk parm size.
-	movw	%ax, %ds		# %ax and %es already contain INITSEG
+start2:
+	movw	%cs, %ax
+	movw	%ax, %ds
+	movw	%ax, %es
 	movw	%ax, %ss
-	movw	%di, %sp		# put stack at INITSEG:0x4000-12.
+	movw	$0x7c00, %sp
+	sti
+	cld
 
-# Many BIOS's default disk parameter tables will not recognize
-# multi-sector reads beyond the maximum sector number specified
-# in the default diskette parameter tables - this may mean 7
-# sectors in some cases.
-#
-# Since single sector reads are slow and out of the question,
-# we must take care of this by creating new parameter tables
-# (for the first disk) in RAM.  We will set the maximum sector
-# count to 36 - the most we will encounter on an ED 2.88.  
-#
-# High doesn't hurt.  Low does.
-#
-# Segments are as follows: %cs = %ds = %es = %ss = INITSEG, %fs = 0,
-# and %gs is unused.
-
-	movw	%cx, %fs		# %fs = 0
-	movw	$0x78, %bx		# %fs:%bx is parameter table address
-	pushw	%ds
-	ldsw	%fs:(%bx), %si		# %ds:%si is source
-	movb	$6, %cl			# copy 12 bytes
-	pushw	%di			# %di = 0x4000-12.
-	rep				# don't worry about cld
-	movsw				# already done above
-	popw	%di
-	popw	%ds
-	movb	$36, 0x4(%di)		# patch sector count
-	movw	%di, %fs:(%bx)
-	movw	%es, %fs:2(%bx)
-
-# Get disk drive parameters, specifically number of sectors/track.
-
-# It seems that there is no BIOS call to get the number of sectors.
-# Guess 36 sectors if sector 36 can be read, 18 sectors if sector 18
-# can be read, 15 if sector 15 can be read.  Otherwise guess 9.
-# Note that %cx = 0 from rep movsw above.
+	movw	$bugger_off_msg, %si
 
-	movw	$disksizes, %si		# table of sizes to try
-probe_loop:
+msg_loop:
 	lodsb
-	cbtw				# extend to word
-	movw	%ax, sectors
-	cmpw	$disksizes+4, %si
-	jae	got_sectors		# If all else fails, try 9
-
-	xchgw	%cx, %ax		# %cx = track and sector
-	xorw	%dx, %dx		# drive 0, head 0
-	movw	$0x0200, %bx		# address = 512, in INITSEG (%es = %cs)
-	movw	$0x0201, %ax		# service 2, 1 sector
-	int	$0x13
-	jc	probe_loop		# try next value
-
-got_sectors:
-	movb	$0x03, %ah		# read cursor pos
-	xorb	%bh, %bh
-	int	$0x10
-	movw	$9, %cx
-	movb	$0x07, %bl		# page 0, attribute 7 (normal)
-					# %bh is set above; int10 doesn't
-					# modify it
-	movw	$msg1, %bp
-	movw	$0x1301, %ax		# write string, move cursor
-	int	$0x10			# tell the user we're loading..
-
-# Load the setup-sectors directly after the moved bootblock (at 0x90200).
-# We should know the drive geometry to do it, as setup may exceed first
-# cylinder (for 9-sector 360K and 720K floppies).
-
-	movw	$0x0001, %ax		# set sread (sector-to-read) to 1 as
-	movw	$sread, %si		# the boot sector has already been read
-	movw	%ax, (%si)
-
-	call	kill_motor		# reset FDC
-	movw	$0x0200, %bx		# address = 512, in INITSEG
-next_step:
-	movb	setup_sects, %al
-	movw	sectors, %cx
-	subw	(%si), %cx		# (%si) = sread
-	cmpb	%cl, %al
-	jbe	no_cyl_crossing
-	movw	sectors, %ax
-	subw	(%si), %ax		# (%si) = sread
-no_cyl_crossing:
-	call	read_track
-	pushw	%ax			# save it
-	call	set_next		# set %bx properly; it uses %ax,%cx,%dx
-	popw	%ax			# restore
-	subb	%al, setup_sects	# rest - for next step
-	jnz	next_step
-
-	pushw	$SYSSEG
-	popw	%es			# %es = SYSSEG
-	call	read_it
-	call	kill_motor
-	call	print_nl
-
-# After that we check which root-device to use. If the device is
-# defined (!= 0), nothing is done and the given device is used.
-# Otherwise, one of /dev/fd0H2880 (2,32) or /dev/PS0 (2,28) or /dev/at0 (2,8)
-# depending on the number of sectors we pretend to know we have.
-
-# Segments are as follows: %cs = %ds = %ss = INITSEG,
-#	%es = SYSSEG, %fs = 0, %gs is unused.
-
-	movw	root_dev, %ax
-	orw	%ax, %ax
-	jne	root_defined
-
-	movw	sectors, %bx
-	movw	$0x0208, %ax		# /dev/ps0 - 1.2Mb
-	cmpw	$15, %bx
-	je	root_defined
-
-	movb	$0x1c, %al		# /dev/PS0 - 1.44Mb
-	cmpw	$18, %bx
-	je	root_defined
-
-	movb	$0x20, %al		# /dev/fd0H2880 - 2.88Mb
-	cmpw	$36, %bx
-	je	root_defined
-
-	movb	$0, %al			# /dev/fd0 - autodetect
-root_defined:
-	movw	%ax, root_dev
-
-# After that (everything loaded), we jump to the setup-routine
-# loaded directly after the bootblock:
-
-	ljmp	$SETUPSEG, $0
-
-# These variables are addressed via %si register as it gives shorter code.
-
-sread:	.word 0				# sectors read of current track
-head:	.word 0				# current head
-track:	.word 0				# current track
-
-# This routine loads the system at address SYSSEG, making sure
-# no 64kB boundaries are crossed. We try to load it as fast as
-# possible, loading whole tracks whenever we can.
-
-read_it:
-	movw	%es, %ax		# %es = SYSSEG when called
-	testw	$0x0fff, %ax
-die:	jne	die			# %es must be at 64kB boundary
-	xorw	%bx, %bx		# %bx is starting address within segment
-rp_read:
-#ifdef __BIG_KERNEL__			# look in setup.S for bootsect_kludge
-	bootsect_kludge = 0x220		# 0x200 + 0x20 which is the size of the
-	lcall	*bootsect_kludge	# bootsector + bootsect_kludge offset
-#else
-	movw	%es, %ax
-	subw	$SYSSEG, %ax
-	movw	%bx, %cx
-	shr	$4, %cx
-	add	%cx, %ax		# check offset
-#endif
-	cmpw	syssize, %ax		# have we loaded everything yet?
-	jbe	ok1_read
-
-	ret
-
-ok1_read:
-	movw	sectors, %ax
-	subw	(%si), %ax		# (%si) = sread
-	movw	%ax, %cx
-	shlw	$9, %cx
-	addw	%bx, %cx
-	jnc	ok2_read
-
-	je	ok2_read
-
-	xorw	%ax, %ax
-	subw	%bx, %ax
-	shrw	$9, %ax
-ok2_read:
-	call	read_track
-	call	set_next
-	jmp	rp_read
-
-read_track:
-	pusha
-	pusha	
-	movw	$0xe2e, %ax 		# loading... message 2e = .
-	movw	$7, %bx
- 	int	$0x10
-	popa		
-
-# Accessing head, track, sread via %si gives shorter code.
-
-	movw	4(%si), %dx		# 4(%si) = track
-	movw	(%si), %cx		# (%si)  = sread
-	incw	%cx
-	movb	%dl, %ch
-	movw	2(%si), %dx		# 2(%si) = head
-	movb	%dl, %dh
-	andw	$0x0100, %dx
-	movb	$2, %ah
-	pushw	%dx			# save for error dump
-	pushw	%cx
-	pushw	%bx
-	pushw	%ax
-	int	$0x13
-	jc	bad_rt
-
-	addw	$8, %sp
-	popa
-	ret
-
-set_next:
-	movw	%ax, %cx
-	addw	(%si), %ax		# (%si) = sread
-	cmp	sectors, %ax
-	jne	ok3_set
-	movw	$0x0001, %ax
-	xorw	%ax, 2(%si)		# change head
-	jne	ok4_set
-	incw	4(%si)			# next track
-ok4_set:
-	xorw	%ax, %ax
-ok3_set:
-	movw	%ax, (%si)		# set sread
-	shlw	$9, %cx
-	addw	%cx, %bx
-	jnc	set_next_fin
-	movw	%es, %ax
-	addb	$0x10, %ah
-	movw	%ax, %es
+	andb	%al, %al
+	jz	die
+	mov	$0xe, %ah
 	xorw	%bx, %bx
-set_next_fin:
-	ret
-
-bad_rt:
-	pushw	%ax			# save error code
-	call	print_all		# %ah = error, %al = read
-	xorb	%ah, %ah
-	xorb	%dl, %dl
-	int	$0x13
-	addw	$10, %sp
-	popa
-	jmp read_track
-
-# print_all is for debugging purposes.  
-#
-# it will print out all of the registers.  The assumption is that this is
-# called from a routine, with a stack frame like
-#
-#	%dx 
-#	%cx
-#	%bx
-#	%ax
-#	(error)
-#	ret <- %sp
- 
-print_all:
-	movw	$5, %cx			# error code + 4 registers
-	movw	%sp, %bp
-print_loop:
-	pushw	%cx			# save count remaining
-	call	print_nl		# <-- for readability
-	cmpb	$5, %cl
-	jae	no_reg			# see if register name is needed
-	
-	movw	$0xe05 + 'A' - 1, %ax
-	subb	%cl, %al
-	int	$0x10
-	movb	$'X', %al
 	int	$0x10
-	movb	$':', %al
-	int	$0x10
-no_reg:
-	addw	$2, %bp			# next register
-	call	print_hex		# print it
-	popw	%cx
-	loop	print_loop
-	ret
+	jmp	msg_loop
 
-print_nl:
-	movw	$0xe0d, %ax		# CR
-	int	$0x10
-	movb	$0xa, %al		# LF
-	int 	$0x10
-	ret
-
-# print_hex is for debugging purposes, and prints the word
-# pointed to by %ss:%bp in hexadecimal.
-
-print_hex:
-	movw	$4, %cx			# 4 hex digits
-	movw	(%bp), %dx		# load word into %dx
-print_digit:
-	rolw	$4, %dx			# rotate to use low 4 bits
-	movw	$0xe0f, %ax		# %ah = request
-	andb	%dl, %al		# %al = mask for nybble
-	addb	$0x90, %al		# convert %al to ascii hex
-	daa				# in only four instructions!
-	adc	$0x40, %al
-	daa
-	int	$0x10
-	loop	print_digit
-	ret
+die:
+	# Allow the user to press a key, then reboot
+	xorw	%ax, %ax
+	int	$0x16
+	int	$0x19
 
-# This procedure turns off the floppy drive motor, so
-# that we enter the kernel in a known state, and
-# don't have to worry about it later.
-# NOTE: Doesn't save %ax or %dx; do it yourself if you need to.
-
-kill_motor:
-#if 1
-	xorw	%ax, %ax		# reset FDC
-	xorb	%dl, %dl
-	int	$0x13
-#else
-	movw	$0x3f2, %dx
-	xorb	%al, %al
-	outb	%al, %dx
-#endif
-	ret
 
-sectors:	.word 0
-disksizes:	.byte 36, 18, 15, 9
-msg1:		.byte 13, 10
-		.ascii "Loading"
+bugger_off_msg:
+	.ascii	"Direct booting from floppy is no longer supported.\r\n"
+	.ascii	"Please use a boot loader program instead.\r\n"
+	.ascii	"\n"
+	.ascii	"Remove disk and press any key to reboot . . .\r\n"
+	.byte	0
+	
 
-# XXX: This is a fairly snug fit.
+	# Kernel attributes; used by setup
 
-.org 497
+	.org 497
 setup_sects:	.byte SETUPSECTS
 root_flags:	.word ROOT_RDONLY
 syssize:	.word SYSSIZE
arch/i386/boot/tools/build.c renamed from arch/i386/boot/tools/build.c.dist +2 -5
@@ -150,13 +150,10 @@
 	sz = sb.st_size;
 	fprintf (stderr, "System is %d kB\n", sz/1024);
 	sys_size = (sz + 15) / 16;
-	/* 0x28000*16 = 2.5 MB, conservative estimate for the current maximum */
-	if (sys_size > (is_big_kernel ? 0x28000 : DEF_SYSSIZE))
+	/* 0x40000*16 = 4.0 MB, reasonable estimate for the current maximum */
+	if (sys_size > (is_big_kernel ? 0x40000 : DEF_SYSSIZE))
 		die("System is too big. Try using %smodules.",
 			is_big_kernel ? "" : "bzImage or ");
-	if (sys_size > 0xefff)
-		fprintf(stderr,"warning: kernel is too big for standalone boot "
-		    "from floppy\n");
 	while (sz > 0) {
 		int l, n;
 
Signature · 3 lines
<[email protected]> at work, <[email protected]> in private!
"Unix gives you enough rope to shoot yourself in the foot."
http://www.zytor.com/~hpa/puzzle.txt	<[email protected]>
#2 lore raw

Re: Killing off the boot sector (was: [STATUS 2.5] January 8, 2002)

    Hi HPA :))
Quoted 1 line

Can we *please* kill off the stupid in-kernel boot sector?

Yespleaseyespleaseyesplease... I posted a message here a long
time ago because I couldn't boot a raw kernel image with 2.4.x. Well, it didn't work even with a emulated floppy image (El Torito, you know)...

I think that, with those good boot loaders out there, this piece
of code, that is architecture dependend, should be off-the kernel.

IMHO, those saved bytes should be used to store another cool Tux
image or something like that XDDDDD

Quoted 2 lines

People keep asking what's the harm in keeping it, and the answer is, quite simply: "because people continue to try to use it."

Exact...

You've got a very good and sensible idea ;)
Raúl

#3 lore raw

Re: Killing off the boot sector (was: [STATUS 2.5] January 8, 2002)

In reply to H. Peter Anvin
Quoted 11 lines

Can we *please* kill off the stupid in-kernel boot sector?

Here is a patch that guts it to print an error message. It's even tested.

arch/i386/boot/bootsect.S renamed from arch/i386/boot/bootsect.S.dist +0 -6
-# This procedure turns off the floppy drive motor, so
-# that we enter the kernel in a known state, and
-# don't have to worry about it later.
-# NOTE: Doesn't save %ax or %dx; do it yourself if you need to.
-
-kill_motor:

arch/i386/boot/bootsect.S line 405

Quoted 10 lines
arch/i386/boot/bootsect.S renamed from arch/i386/boot/bootsect.S.dist +0 -10
-#if 1
-	xorw	%ax, %ax		# reset FDC
-	xorb	%dl, %dl
-	int	$0x13
-#else
-	movw	$0x3f2, %dx
-	xorb	%al, %al
-	outb	%al, %dx
-#endif
-	ret

Shouldn't that part stay, incase somebody boots a machine from a floppy, and leaves it running for hours?

arch/i386/boot/bootsect.S line 80

Quoted 4 lines
arch/i386/boot/bootsect.S renamed from arch/i386/boot/bootsect.S.dist +4 -0
+	.ascii	"Direct booting from floppy is no longer supported.\r\n"
+	.ascii	"Please use a boot loader program instead.\r\n"
+	.ascii	"\n"
+	.ascii	"Remove disk and press any key to reboot . . .\r\n"

Couldn't you put an ASCII penguin in there? :-)

John.

#4 lore raw

Re: Killing off the boot sector (was: [STATUS 2.5] January 8, 2002)

Followup to:  <[email protected]>
By author:    John Bradford <[email protected]>
In newsgroup: linux.dev.kernel
Quoted 4 lines

Shouldn't that part stay, incase somebody boots a machine from a floppy, and leaves it running for hours?

No; interrupts are enabled so the BIOS will time out the floppy and turn off the motor if necessary. The only reason Linux (sort of) needs that code is because the kernel takes control away from the BIOS. I say "sort of" because it really only matters if the kernel doesn't have a floppy driver.

-hpa

Signature · 3 lines
<[email protected]> at work, <[email protected]> in private!
"Unix gives you enough rope to shoot yourself in the foot."
http://www.zytor.com/~hpa/puzzle.txt	<[email protected]>