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 _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de https://lists.denx.de/listinfo/u-boot