public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: "Ilia A. Petrov" <masmas@mcst.ru>
To: linux-usb-devel@lists.sourceforge.net, linux-kernel@vger.kernel.org
Subject: PROBLEM: when booting from USB-HDD device kernel 2.4.21 is trying to mount root file system too early before usb device is found on the usb-bus
Date: Fri, 04 Jul 2003 16:03:25 +0400	[thread overview]
Message-ID: <3F056D0D.3050101@mcst.ru> (raw)

When kernel is mounting root file system it is doing it too fast so 
usb-support have not ime to scan bus for mass-storage devices and 
connect them.

i've tested bios usb support, so i've checked how fine different OSes 
boot from USB mass-storage divices. here is my linux test:
	kernel 2.4.21, with compiled-in usb support (core, HID and mass-storage 
devices) and scsi generic support
	USB-HDD device supports bulk-only & scsi commands
	PC with BIOS that supports USB-booting

i've executed "rdev" to point kernel that root file system will be on 
/dev/sda1 (cause USB-HDD uses scsi commands, it's seen as an SCSI drive)

but when i tried to boot it i've found that kernel tries to mount root 
file system before is scans usb-bus for devices so it falls to panic :(

when i checked sources i've found that there is no way to delay this 
like it's doing when mounting floppy RAMDISK.

here is my system:

Linux version 2.4.21 (root@ejik) (gcc version 2.95.3 20010315 (release)) 
#4 Thu Jun 19 19:41:08 MSD 2003

Linux ejik 2.4.21 #4 Thu Jun 19 19:41:08 MSD 2003 i686 unknown

Gnu C                  2.95.3
Gnu make               3.79.1
binutils               2.11.90.0.19
util-linux             2.11f
mount                  2.11b
modutils               2.4.6
e2fsprogs              1.22
reiserfsprogs          3.x.0j
pcmcia-cs              3.1.26
PPP                    2.4.1
Linux C Library        2.2.3
Dynamic linker (ldd)   2.2.3
Procps                 2.0.7
Net-tools              1.60
Kbd                    1.06
Sh-utils               2.0
Modules Loaded         nvidia vmnet vmmon 3c59x

bash-2.05# cat /proc/cpuinfo
processor       : 0
vendor_id       : GenuineIntel
cpu family      : 15
model           : 1
model name      : Intel(R) Pentium(R) 4 CPU 1.70GHz
stepping        : 2
cpu MHz         : 1716.958
cache size      : 256 KB
fdiv_bug        : no
hlt_bug         : no
f00f_bug        : no
coma_bug        : no
fpu             : yes
fpu_exception   : yes
cpuid level     : 2
wp              : yes
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge 
mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm
bogomips        : 3420.97

bash-2.05# cat /proc/modules
nvidia               1540272  10 (autoclean)
vmnet                  21120   9
vmmon                  20000   0 (unused)
3c59x                  25120   1

bash-2.05# cat /proc/ioports
0000-001f : dma1
0020-003f : pic1
0040-005f : timer
0060-006f : keyboard
0070-007f : rtc
0080-008f : dma page reg
00a0-00bf : pic2
00c0-00df : dma2
00f0-00ff : fpu
0170-0177 : ide1
01f0-01f7 : ide0
02f8-02ff : serial(auto)
0376-0376 : ide1
03c0-03df : vesafb
03f6-03f6 : ide0
03f8-03ff : serial(auto)
0cf8-0cff : PCI conf1
5000-500f : Intel Corp. 82801BA/BAM SMBus
c000-c07f : 3Com Corporation 3c905C-TX/TX-M [Tornado]
   c000-c07f : 02:03.0
d000-d01f : Intel Corp. 82801BA/BAM USB (Hub #1)
   d000-d01f : usb-uhci
d800-d81f : Intel Corp. 82801BA/BAM USB (Hub #2)
   d800-d81f : usb-uhci
dc00-dcff : Intel Corp. 82801BA/BAM AC'97 Audio
   dc00-dcff : Intel ICH2
e000-e03f : Intel Corp. 82801BA/BAM AC'97 Audio
   e000-e03f : Intel ICH2
f000-f00f : Intel Corp. 82801BA IDE U100
   f000-f007 : ide0
   f008-f00f : ide1

bash-2.05# cat /proc/iomem
00000000-0009fbff : System RAM
0009fc00-0009ffff : reserved
000a0000-000bffff : Video RAM area
000c0000-000c7fff : Video ROM
000d0000-000d07ff : Extension ROM
000f0000-000fffff : System ROM
00100000-0ffeffff : System RAM
   00100000-002df321 : Kernel code
   002df322-0039c1b7 : Kernel data
0fff0000-0fff2fff : ACPI Non-volatile Storage
0fff3000-0fffffff : ACPI Tables
e0000000-e7ffffff : PCI Bus #01
   e0000000-e7ffffff : nVidia Corporation NV11 [GeForce2 MX]
     e0000000-e0bfffff : vesafb
e8000000-ebffffff : Intel Corp. 82845 845 (Brookdale) Chipset Host Bridge
ec000000-edffffff : PCI Bus #01
   ec000000-ecffffff : nVidia Corporation NV11 [GeForce2 MX]
ef000000-ef00007f : 3Com Corporation 3c905C-TX/TX-M [Tornado]
fec00000-ffffffff : reserved

bash-2.05# cat /proc/scsi/scsi
Attached devices:
Host: scsi0 Channel: 00 Id: 00 Lun: 00
   Vendor: IC25N020 Model: ATCS04-0         Rev: CA2O
   Type:   Direct-Access                    ANSI SCSI revision: 02


i've made a temporary solution- just copied a code that prints "insert 
floppy with ramdisk and press enter" a waits for keypress:

from function "change_floppy" in init/do_mounts.c:

	struct termios termios;
	char c;
	int fd;
	printk(KERN_NOTICE "VFS: Insert %s and press ENTER\n", buf);
	fd = open("/dev/console", O_RDWR, 0);
	if (fd >= 0) {
		sys_ioctl(fd, TCGETS, (long)&termios);
		termios.c_lflag &= ~ICANON;
		sys_ioctl(fd, TCSETSF, (long)&termios);
		read(fd, &c, 1);
		termios.c_lflag |= ICANON;
		sys_ioctl(fd, TCSETSF, (long)&termios);
		close(fd);
	}

to function "mount_block_root" in init/do_mounts.c before 
"get_fs_names(fs_names)" call.

it works fine: i wait for message that kernel found USB mass-storage 
device and then press enter, but i think it isn't a best solution.
first u always need press a key to boot
second - if pc has only usb-keyboard connected and no pc\2 or com- user 
couldn't mount root fs because it waits input in /dev/console

so i think it's better to add some kind of delay before mounting root, 
or, imho better way, - when completing init of usb bus, first scans it 
and connect all devices and only after all devices were connected 
returns to main kernel code.

regards,
	Ilia Petrov



             reply	other threads:[~2003-07-04 11:43 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2003-07-04 12:03 Ilia A. Petrov [this message]
2003-07-04 16:01 ` [linux-usb-devel] PROBLEM: when booting from USB-HDD device kernel 2.4.21 is trying to mount root file system too early before usb device is found on the usb-bus David Brownell
2003-07-07  9:20   ` Ilia A. Petrov
2003-07-07 16:09     ` David Brownell

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=3F056D0D.3050101@mcst.ru \
    --to=masmas@mcst.ru \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-usb-devel@lists.sourceforge.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox