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