From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1QuFLM-0006av-Sw for mharc-grub-devel@gnu.org; Thu, 18 Aug 2011 23:02:00 -0400 Received: from eggs.gnu.org ([140.186.70.92]:45026) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1QuFLJ-0006Z7-8H for grub-devel@gnu.org; Thu, 18 Aug 2011 23:01:58 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1QuFLH-00035C-Qp for grub-devel@gnu.org; Thu, 18 Aug 2011 23:01:57 -0400 Received: from m50-133.163.com ([123.125.50.133]:38544) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1QuFLG-0002yK-96 for grub-devel@gnu.org; Thu, 18 Aug 2011 23:01:55 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=163.com; s=s110527; h=Received:Message-ID:Date:From:User-Agent: MIME-Version:To:CC:Subject:References:In-Reply-To:Content-Type: Content-Transfer-Encoding; bh=BXLv8bdW2j0JfPrZmEmhgnLQhuYB5wKr0P YcyJxjisQ=; b=corhnaJqo+37RfqCl4888ORRYkECjxYxadBmMEbwuKkw5MUK/G yzAU17O7dWKa9r7LNFbIO7bYGQLOabAPnI/9Q24VyIdwRLeLg7RHzgwACKiEtpKH lg41kTDULFPz/rAsEDojIy+YCTyDztDSlMxEZoZ0xaWNklleYbQsm2xTc= Received: from [10.2.8.35] (unknown [152.104.150.33]) by smtp3 (Coremail) with SMTP id DdGowKA7XFCo0U1OejZNAA--.48S2; Fri, 19 Aug 2011 11:00:41 +0800 (CST) Message-ID: <4E4DD138.2080102@163.com> Date: Fri, 19 Aug 2011 10:58:00 +0800 From: Cui Lei User-Agent: Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20110627 Thunderbird/5.0 MIME-Version: 1.0 To: =?UTF-8?B?QWxlxaEgTmVzcnN0YQ==?= Subject: [Resolved] Grub2 can not detect usb disk References: <1309029199.2532.35.camel@pracovna> <201106252151.12483.szymon@janc.net.pl> <1309120668.3268.153.camel@pracovna> <4E40A417.6000309@163.com> <1312926878.2943.128.camel@pracovna> In-Reply-To: <1312926878.2943.128.camel@pracovna> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit X-CM-TRANSID: DdGowKA7XFCo0U1OejZNAA--.48S2 X-Coremail-Antispam: 1Uf129KBjvJXoWxKFy5KF4Uur4fWF4DXw15XFb_yoW7KFy8pa yYqF4ayrWkJrs3Ar1DZw1F9r4Y9FykA3yrKFn5X34v9rn0qr9YvryxKrsYga4UWrn7Way0 vF4qvay8Ca4DCaDanT9S1TB71UUUUUUqnTZGkaVYY2UrUUUUjbIjqfuFe4nvWSU5nxnvy2 9KBjDUYxBIdaVFxhVjvjDU0xZFpf9x07j-3kZUUUUU= X-CM-SenderInfo: pqhyv25iruwvdwbsiiqs6rljoofrz/xtbBDhWgNkX0aFzbRwAAsU X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6, seldom 2.4 (older, 4) X-Received-From: 123.125.50.133 Cc: The development of GNU GRUB X-BeenThere: grub-devel@gnu.org X-Mailman-Version: 2.1.14 Precedence: list Reply-To: The development of GNU GRUB List-Id: The development of GNU GRUB List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 19 Aug 2011 03:01:58 -0000 Thank you for your help, very much! ^_^ This problem have been resolved and I can usb the usb_keyborard under grub-shell and I can boot ubuntu11.04 from usb disk. My mainboard is via 8595a, the usb controller is uhci. I resolved it by add these code in the grub-core/bus/usb/uhci.c: (1) 182 /*Set bus master*/ 183 addr = grub_pci_make_address (dev, GRUB_PCI_REG_COMMAND); 184 grub_uint16_t val = grub_pci_read_word(addr); 185 val = (val & ~0) | GRUB_PCI_COMMAND_BUS_MASTER; 186 grub_pci_write_word(addr, val); (2) 203 // Reset PIRQ and SMI 204 addr = grub_pci_make_address (dev, 0xC0); //USBLEGSUP 0xc0 205 grub_pci_write_word(addr, 0x8f00); //USBLEGSUP_RWC 0x8f00 /* the R/WC bits */ 206 // Reset the HC 207 grub_uhci_writereg16(u, GRUB_UHCI_REG_USBCMD, 0x0002); //USBCMD_HCRESET 0x0002 208 grub_millisleep(5); 209 // Disable interrupts and commands (just to be safe). 210 grub_outw (0, u->iobase + 4); //USBINTR 4 /*Interrupt enable register*/ 211 grub_uhci_writereg16 (u, GRUB_UHCI_REG_USBCMD, 0); I don't know whether it is useful to the other one, but may be a reference. BRs, Rock. > Hi, > > I am afraid, I maybe will not help You too much but I try it: > > I shortly looked into ML to Your posts. As I saw short part of debug > output in one of Your e-mail, GRUB freezes when it wants to get device > descriptor - more precisely, when it requests first 8 bytes of device > descriptor. It is the first thing which is done after address is > assigned to the device. > > So, it looks like device does not set address properly (even if control > message Set Address returns success) or happened something else what > prevent device to respond (but I don't know what...). > > For the first try You can increase related delays in usbhub.c: > > ... > /* Wait "recovery interval", spec. says 2ms */ > grub_millisleep (2);<<<<---- HERE (try 4ms or more) > > grub_usb_device_attach (dev); > ... > > ... > /* Enable the port. */ > err = hub->controller->dev->portstatus (hub->controller, portno, 1); > if (err) > return; > hub->controller->dev->pending_reset = grub_get_time_ms () + 5000; > > grub_millisleep (10);<<<<---- maybe here also > > /* Enable the port and create a device. */ > dev = grub_usb_hub_add_dev (hub->controller, speed, portno, 0); > hub->controller->dev->pending_reset = 0; > if (! dev) > return; > ... > > If this will not help You, I currently have no other idea what could be > the reason of timeout. > I think You don't need EHCI because it looks like Set Address control > message works (at least it does not return error), i.e. You probably > have OHCI or UHCI USB (companion) controller on computer and Your device > is working at full or low speed with Your USB controller. > > By the way, for the first look into ML I did not find which USB > controller You have - OHCI/UHCI ? (which driver/module are You using - > ohci/uhci?) - and which machine/architecture is the computer You are > trying to boot with GRUB2 - ? > I sometimes had some unidentified problems on my UHCI/EHCI controller, > mostly with port powering - UHCI does not have power management but EHCI > does and if EHCI is not properly initialized by BIOS (it could be Your > case with coreboot, maybe ?) then USB ports are not properly powered. > Another BIOS (coreboot?) issue could be improper handling of USB > controller ownership. > > Do You have USB device connected directly into root port or via some USB > hub ? Try to do it in opposite way (i.e. if You are not using the USB > hub, try use it and connect USB device via hub - maybe it helps...) > > Hmmm, I remember now one issue which could be related to Your problem. > On my very old machine with OHCI USB controller some devices are not > working "for the first time". I am still not able to debug why it > happened (it does not happened when full debug is active - so it looks > like it is related to some timing). But I am afraid it will be not Your > case because device stops working after it is recognized, configured, > usbms module loaded and GRUB USB device usb0 created. > But - try load ohci/uhci module when USB disk is connected and then > disconnect and connect it again after few seconds. In my case device > becomes working as new usb device (i.e. usb1). > > Additionally, lot of manufacturers does not follow USB or USBMS > specifications, as You can read in Linux source code of USB controllers > and USB mass storage devices and related documentation. > Did You tried more different USB mass storage devices ? > What is manufacturer& type of Your USB mass storage device ? > > Of course, You can also try EHCI driver, it maybe can solve Your problem > because of little bit different ports/devices handling. But EHCI driver > is currently highly experimental, it still exists only as uncorrected > and not accepted "patch". I have to do some improvement but I don't have > sufficient time still, unfortunately... > If You want try to use it, You can get my patch from ML (sent at > 25.6.2011) and use it with related source code trunk branch revision > (maybe also any later or current revision, because USB parts of GRUB are > not frequently changed). Please also read about know issue and another > limitations of the "zero version" of EHCI driver - e.g. it may not work > if Your PC is not x86 machine or USB registers are mapped above 4GB etc. > > Sorry if You will wait longer time for my response in future - I don't > check the post so often and additionally currently I am (and probably > will be) longer time too busy - I am not regular GRUB2 contributor, I do > something for GRUB2 USB part only time to time... > > BRs, > Ales > > > Cui Lei píše v Út 09. 08. 2011 v 11:05 +0800: >> Hi Aleš, >> I am trying to boot OS from USB disk, I use coreboot-v4 with grub2 as >> payload, but my usb disk can not been >> detect. I try to use usb-keyboard, it is not working. I know you are >> working on the EHCI driver from Vladimir , >> could you give me some advices? Vladimir said it may need EHCI driver, >> but I think the usb device should run >> with low-speed or full-speed if no EHCI driver.C >> >> Looking forward to your reply. >> BRs, >> Rock Cui. >> >> >