On 09/04/2017 05:59 AM, Bin Meng wrote: > Hi Heinrich, > > On Fri, Sep 1, 2017 at 1:24 AM, Heinrich Schuchardt <xypron.g...@gmx.de> > wrote: >> On 08/31/2017 02:55 PM, Bin Meng wrote: >>> Hi Simon, >>> >>> On Thu, Aug 31, 2017 at 8:52 PM, Simon Glass <s...@chromium.org> wrote: >>>> Hi Bin, >>>> >>>> On 31 August 2017 at 10:53, Bin Meng <bmeng...@gmail.com> wrote: >>>>> Hi Heinrich, >>>>> >>>>> On Thu, Aug 31, 2017 at 5:19 AM, Heinrich Schuchardt <xypron.g...@gmx.de> >>>>> wrote: >>>>>> On 08/30/2017 06:37 AM, Heinrich Schuchardt wrote: >>>>>>> >>>>>>> >>>>>>> On 08/30/2017 03:54 AM, Bin Meng wrote: >>>>>>>> Hi Heinrich, >>>>>>>> >>>>>>>> On Wed, Aug 30, 2017 at 4:26 AM, Heinrich Schuchardt >>>>>>>> <xypron.g...@gmx.de> wrote: >>>>>>>>> Hello Simon, >>>>>>>>> >>>>>>>>> U-Boot HEAD qemu-86_defconfig cannot discover an IDE disk with one FAT >>>>>>>>> partition in qemu-system-x86_64. >>>>>>>>> >>>>>>>>> By bisection I found this patch. >>>>>>>>> >>>>>>>>> b7c6baef2891ce8978cbfddb66e944943473ac21 >>>>>>>>> x86: Convert MMC to driver model >>>>>>>>> >>>>>>>>> With this patch I get >>>>>>>>> >>>>>>>>> IDE: Bus 0: OK Bus 1: OK >>>>>>>>> Device 0: Model: QEMU HARDDISK Firm: 2.5+ Ser#: QM00001 >>>>>>>>> Type: Hard Disk >>>>>>>>> Supports 48-bit addressing >>>>>>>>> Capacity: 128.0 MB = 0.1 GB (262144 x 512) >>>>>>>>> ** Can't read Driver Desriptor Block ** >>>>>>>>> Device 1: not available >>>>>>>>> Device 2: Model: QEMU Firm: 2.5+ Ser#: QEMU DVD-ROM >>>>>>>>> Type: Removable CD ROM >>>>>>>>> Capacity: not available >>>>>>>>> Device 3: not available >>>>>>>>> >>>>>>>>> => ide info >>>>>>>>> => >>>>>>>>> >>>>>>>>> Without the patch I get=> ide info >>>>>>>>> Device 0: Model: QEMU HARDDISK Firm: 2.5+ Ser#: QM00001 >>>>>>>>> Type: Hard Disk >>>>>>>>> Supports 48-bit addressing >>>>>>>>> Capacity: 128.0 MB = 0.1 GB (262144 x 512) >>>>>>>>> Device 2: Model: QEMU Firm: 2.5+ Ser#: QEMU DVD-ROM >>>>>>>>> Type: Removable CD ROM >>>>>>>>> Capacity: not available >>>>>>>>> >>>>>>>>> I think we observe two independent errors here: >>>>>>>>> >>>>>>>>> - The hard disk Device 0 is not read. >>>>>>>>> - The ide command stops at the first device that is not available. >>>>>>>>> >>>>>>>>> I guess only the first is caused by your patch. >>>>>>>> >>>>>>>> Both logs look fine to me. The "Can't read Driver Desriptor Block" >>>>>>>> comes from part_mac.c. Did you verify the actual IDE read/write fails >>>>>>>> with current HEAD? >>>>>>>> >>>>>>>> Regards, >>>>>>>> Bin >>>>>>>> >>>>>>> >>>>>>> Hello Bin, >>>>>>> >>>>>>> I have not checked block level read but used the shell commands for >>>>>>> testing. >>>>>>> >>>>>>> Before the patch I can read the directory of the drive: >>>>>>> >>>>>>> => ide info >>>>>>> Device 0: Model: QEMU HARDDISK Firm: 2.5+ Ser#: QM00001 >>>>>>> Type: Hard Disk >>>>>>> Supports 48-bit addressing >>>>>>> Capacity: 128.0 MB = 0.1 GB (262144 x 512) >>>>>>> Device 2: Model: QEMU Firm: 2.5+ Ser#: QEMU DVD-ROM >>>>>>> Type: Removable CD ROM >>>>>>> Capacity: not available >>>>>>> => fat2ls ide 0:1 >>>>>>> Unknown command 'fat2ls' - try 'help' >>>>>>> => fatls ide 0:1 >>>>>>> 164768 snp.efi >>>>>>> 0 file1 >>>>>>> 0 file2 >>>>>>> >>>>>>> >>>>>>> After the patch (including HEAD) I cannot read the directory and cannot >>>>>>> load the file snp.efi either: >>>>>>> >>>>>>> => ide info >>>>>>> => fatls ide 0:1 >>>>>>> ** Bad device ide 0 ** >>>>>>> => >>>>>>> => fatls mmc 0:1 >>>>>>> ** Bad device mmc 0 ** >>>>>>> >>>>>>> >>>>>>> In both cases I have loaded the same image with: >>>>>>> >>>>>>> export BUILD_ROM=y >>>>>>> make distclean && make qemu-x86_defconfig && make -j6 >>>>>>> >>>>>>> qemu-system-x86_64 -m 1G -bios u-boot.rom -nographic \ >>>>>>> -netdev \ >>>>>>> user,id=eth0,tftp=tftp,net=192.168.76.0/24,dhcpstart=192.168.76.9 \ >>>>>>> -device e1000,netdev=eth0 -machine pc-i440fx-2.8 -hda img >>>>>>> >>>>>>> Best regards >>>>>>> >>>>>>> Heinrich >>>>>>> >>>>>> >>>>>> Hello Bin, hello Simon, >>>>>> >>>>>> I think the bug is in functions ide_init (drivers/block/ide.c). >>>>>> >>>>>> Platform X86 implies CONFIG_BLK=y. >>>>>> >>>>>> So we should initialize ide_dev_desc[i].bdev. >>>>>> >>>>>> We don't, so blk_dread fails after finding no read operation with ENOSYS >>>>>> when called from part_test_dos. >>>>>> >>>>>> The following comment in include/blk.h confirms that bdev has to be >>>>>> filled: >>>>>> >>>>>> #if CONFIG_IS_ENABLED(BLK) >>>>>> /* >>>>>> * For now we have a few functions which take struct blk_desc as a >>>>>> * parameter. This field allows them to look up the associated >>>>>> * device. Once these functions are removed we can drop this field. >>>>>> */ >>>>>> struct udevice *bdev; >>>>>> #else >>>>>> >>>>>> I assume that we have the same issue in in __sata_initialize >>>>>> (drivers/ata/sata.c) but have not tested. >>>>>> >>>>> >>>>> Thanks for the testing! >>>>> >>>>> Simon, are you going to fix this? >>>> >>>> I am not going to race you to it, if you are thinking of fixing it. I >>>> am back from travels in a few days but have a busy week ahead and the >>>> release is imminent :-( >>>> >>> >>> Or maybe Heinrich, do you plan to work on a fix? If not, I will put it >>> on my todo list. >>> >>> Regards, >>> Bin >>> >> >> Hello hello Bin, >> >> I am aware that this bug is release critical. But unfortunately I am >> departing on vacation tomorrow. >> > > Since there is not much time before the release, I did minimal > conversion of the IDE driver to the driver model, and now it works. > >> I guess there should be CONFIG_SYS_IDE_MAXDEVICE times an >> U_BOOT_IDE_DEVICE(ide_disk[i]) which should refer to driver >> U_BOOT_DRIVER(ide_blk). >> >> Just as prove of concept I append a patch to this mail. >> With the patch the IDE partitions are discovered in disk/part.c. >> But they are not usable to access the disk because the devices are not >> registered in a uclass. >> >> Hopefully you will find the time to fix the problem. >> > > Please check the patches [1] that I just sent. > > [1] http://patchwork.ozlabs.org/project/uboot/list/?series=1298 > > Regards, > Bin >
Hello Bin, thank you for working on this. The command 'ide info' now produces a reasonable output for the one drive I attached to qemu. But 'fatls ide 0:1' still claims there is no device ide 0. See output below. This is how I start my image: qemu-system-x86_64 -m 1G -bios denx/u-boot.rom -nographic \ -netdev \ user,id=eth0,tftp=tftp,net=192.168.76.0/24,dhcpstart=192.168.76.9 \ -device e1000,netdev=eth0 -machine pc-i440fx-2.8 -hda img Best regards Heinrich U-Boot 2017.09-rc3-00130-g54c022cc0e (Sep 04 2017 - 07:30:09 +0200) CPU: x86_64, vendor AMD, device 663h DRAM: 1 GiB Using default environment Video: 640x480x16 Model: QEMU x86 (I440FX) Net: e1000: 52:54:00:12:34:56 Warning: e1000#0 using MAC address from ROM eth0: e1000#0 IDE: Bus 0: OK Bus 1: OK Device 0: Model: QEMU HARDDISK Firm: 2.5+ Ser#: QM00001 Type: Hard Disk Supports 48-bit addressing Capacity: 128.0 MB = 0.1 GB (262144 x 512) Device 1: not available Device 2: Model: QEMU Firm: 2.5+ Ser#: QEMU DVD-ROM Type: Removable CD ROM Capacity: not available Device 3: not available Hit any key to stop autoboot: 0 ** Bad device scsi 0 ** Error: Invalid Boot Flag (found 0x0000, expected 0xaa55) ## Kernel loading failed ... zboot - Boot bzImage Usage: zboot [addr] [size] [initrd addr] [initrd size] addr - The optional starting address of the bzimage. If not set it defaults to the environment variable "fileaddr". size - The optional size of the bzimage. Defaults to zero. initrd addr - The address of the initrd image to use, if any. initrd size - The size of the initrd image to use, if any. => ide info Device 0: Model: QEMU HARDDISK Firm: 2.5+ Ser#: QM00001 Type: Hard Disk Capacity: 128.0 MB = 0.1 GB (262144 x 512) => fatls ide 0:1 ** Bad device ide 0 ** _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de https://lists.denx.de/listinfo/u-boot