Hi Heinrich, On Mon, Sep 4, 2017 at 1:41 PM, Heinrich Schuchardt <[email protected]> wrote: > On 09/04/2017 05:59 AM, Bin Meng wrote: >> Hi Heinrich, >> >> On Fri, Sep 1, 2017 at 1:24 AM, Heinrich Schuchardt <[email protected]> >> wrote: >>> On 08/31/2017 02:55 PM, Bin Meng wrote: >>>> Hi Simon, >>>> >>>> On Thu, Aug 31, 2017 at 8:52 PM, Simon Glass <[email protected]> wrote: >>>>> Hi Bin, >>>>> >>>>> On 31 August 2017 at 10:53, Bin Meng <[email protected]> wrote: >>>>>> Hi Heinrich, >>>>>> >>>>>> On Thu, Aug 31, 2017 at 5:19 AM, Heinrich Schuchardt >>>>>> <[email protected]> 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 >>>>>>>>> <[email protected]> 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
I think you need pass "-hdb" to QEMU to enable ide 0:1. [snip] Regards, Bin _______________________________________________ U-Boot mailing list [email protected] https://lists.denx.de/listinfo/u-boot

