All of lore.kernel.org
 help / color / mirror / Atom feed
* [U-Boot] ** Can't read Driver Desriptor Block **
@ 2017-08-29 20:26 Heinrich Schuchardt
  2017-08-30  1:54 ` Bin Meng
  0 siblings, 1 reply; 14+ messages in thread
From: Heinrich Schuchardt @ 2017-08-29 20:26 UTC (permalink / raw)
  To: u-boot

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.

Best regards

Heinrich

^ permalink raw reply	[flat|nested] 14+ messages in thread

* [U-Boot] ** Can't read Driver Desriptor Block **
  2017-08-29 20:26 [U-Boot] ** Can't read Driver Desriptor Block ** Heinrich Schuchardt
@ 2017-08-30  1:54 ` Bin Meng
  2017-08-30  4:37   ` Heinrich Schuchardt
  2017-08-30  6:34   ` Simon Glass
  0 siblings, 2 replies; 14+ messages in thread
From: Bin Meng @ 2017-08-30  1:54 UTC (permalink / raw)
  To: u-boot

Hi Heinrich,

On Wed, Aug 30, 2017 at 4:26 AM, Heinrich Schuchardt <xypron.glpk@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

^ permalink raw reply	[flat|nested] 14+ messages in thread

* [U-Boot] ** Can't read Driver Desriptor Block **
  2017-08-30  1:54 ` Bin Meng
@ 2017-08-30  4:37   ` Heinrich Schuchardt
  2017-08-30 21:19     ` Heinrich Schuchardt
  2017-08-30  6:34   ` Simon Glass
  1 sibling, 1 reply; 14+ messages in thread
From: Heinrich Schuchardt @ 2017-08-30  4:37 UTC (permalink / raw)
  To: u-boot



On 08/30/2017 03:54 AM, Bin Meng wrote:
> Hi Heinrich,
> 
> On Wed, Aug 30, 2017 at 4:26 AM, Heinrich Schuchardt <xypron.glpk@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

^ permalink raw reply	[flat|nested] 14+ messages in thread

* [U-Boot] ** Can't read Driver Desriptor Block **
  2017-08-30  1:54 ` Bin Meng
  2017-08-30  4:37   ` Heinrich Schuchardt
@ 2017-08-30  6:34   ` Simon Glass
  2017-08-30  6:44     ` Lothar Waßmann
  1 sibling, 1 reply; 14+ messages in thread
From: Simon Glass @ 2017-08-30  6:34 UTC (permalink / raw)
  To: u-boot

Hi,

On 30 August 2017 at 09:54, Bin Meng <bmeng.cn@gmail.com> wrote:
> Hi Heinrich,
>
> On Wed, Aug 30, 2017 at 4:26 AM, Heinrich Schuchardt <xypron.glpk@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?

We should definitely change that message to debug(). It is very
confusing. I think I have hunted it down twice myself :-)

Regards,
Simon

^ permalink raw reply	[flat|nested] 14+ messages in thread

* [U-Boot] ** Can't read Driver Desriptor Block **
  2017-08-30  6:34   ` Simon Glass
@ 2017-08-30  6:44     ` Lothar Waßmann
  0 siblings, 0 replies; 14+ messages in thread
From: Lothar Waßmann @ 2017-08-30  6:44 UTC (permalink / raw)
  To: u-boot

Hi,

On Wed, 30 Aug 2017 14:34:18 +0800 Simon Glass wrote:
> Hi,
> 
> On 30 August 2017 at 09:54, Bin Meng <bmeng.cn@gmail.com> wrote:
> > Hi Heinrich,
> >
> > On Wed, Aug 30, 2017 at 4:26 AM, Heinrich Schuchardt <xypron.glpk@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?
> 
> We should definitely change that message to debug(). It is very
... and fix the missing 'c' in 'Desriptor'


Lothar Waßmann

^ permalink raw reply	[flat|nested] 14+ messages in thread

* [U-Boot] ** Can't read Driver Desriptor Block **
  2017-08-30  4:37   ` Heinrich Schuchardt
@ 2017-08-30 21:19     ` Heinrich Schuchardt
  2017-08-31  2:53       ` Bin Meng
  0 siblings, 1 reply; 14+ messages in thread
From: Heinrich Schuchardt @ 2017-08-30 21:19 UTC (permalink / raw)
  To: u-boot

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.glpk@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.

Best regards

Heinrich

^ permalink raw reply	[flat|nested] 14+ messages in thread

* [U-Boot] ** Can't read Driver Desriptor Block **
  2017-08-30 21:19     ` Heinrich Schuchardt
@ 2017-08-31  2:53       ` Bin Meng
  2017-08-31 12:52         ` Simon Glass
  0 siblings, 1 reply; 14+ messages in thread
From: Bin Meng @ 2017-08-31  2:53 UTC (permalink / raw)
  To: u-boot

Hi Heinrich,

On Thu, Aug 31, 2017 at 5:19 AM, Heinrich Schuchardt <xypron.glpk@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.glpk@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

^ permalink raw reply	[flat|nested] 14+ messages in thread

* [U-Boot] ** Can't read Driver Desriptor Block **
  2017-08-31  2:53       ` Bin Meng
@ 2017-08-31 12:52         ` Simon Glass
  2017-08-31 12:55           ` Bin Meng
  0 siblings, 1 reply; 14+ messages in thread
From: Simon Glass @ 2017-08-31 12:52 UTC (permalink / raw)
  To: u-boot

Hi Bin,

On 31 August 2017 at 10:53, Bin Meng <bmeng.cn@gmail.com> wrote:
> Hi Heinrich,
>
> On Thu, Aug 31, 2017 at 5:19 AM, Heinrich Schuchardt <xypron.glpk@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.glpk@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 :-(

Regards,
Simon

^ permalink raw reply	[flat|nested] 14+ messages in thread

* [U-Boot] ** Can't read Driver Desriptor Block **
  2017-08-31 12:52         ` Simon Glass
@ 2017-08-31 12:55           ` Bin Meng
  2017-08-31 17:24             ` Heinrich Schuchardt
  0 siblings, 1 reply; 14+ messages in thread
From: Bin Meng @ 2017-08-31 12:55 UTC (permalink / raw)
  To: u-boot

Hi Simon,

On Thu, Aug 31, 2017 at 8:52 PM, Simon Glass <sjg@chromium.org> wrote:
> Hi Bin,
>
> On 31 August 2017 at 10:53, Bin Meng <bmeng.cn@gmail.com> wrote:
>> Hi Heinrich,
>>
>> On Thu, Aug 31, 2017 at 5:19 AM, Heinrich Schuchardt <xypron.glpk@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.glpk@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

^ permalink raw reply	[flat|nested] 14+ messages in thread

* [U-Boot] ** Can't read Driver Desriptor Block **
  2017-08-31 12:55           ` Bin Meng
@ 2017-08-31 17:24             ` Heinrich Schuchardt
  2017-09-04  3:59               ` Bin Meng
  0 siblings, 1 reply; 14+ messages in thread
From: Heinrich Schuchardt @ 2017-08-31 17:24 UTC (permalink / raw)
  To: u-boot

On 08/31/2017 02:55 PM, Bin Meng wrote:
> Hi Simon,
> 
> On Thu, Aug 31, 2017 at 8:52 PM, Simon Glass <sjg@chromium.org> wrote:
>> Hi Bin,
>>
>> On 31 August 2017 at 10:53, Bin Meng <bmeng.cn@gmail.com> wrote:
>>> Hi Heinrich,
>>>
>>> On Thu, Aug 31, 2017 at 5:19 AM, Heinrich Schuchardt <xypron.glpk@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.glpk@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.

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.

Regards

Heinrich
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0001-foo.patch
Type: text/x-patch
Size: 1368 bytes
Desc: not available
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20170831/bbf7bef3/attachment.bin>

^ permalink raw reply	[flat|nested] 14+ messages in thread

* [U-Boot] ** Can't read Driver Desriptor Block **
  2017-08-31 17:24             ` Heinrich Schuchardt
@ 2017-09-04  3:59               ` Bin Meng
  2017-09-04  5:41                 ` Heinrich Schuchardt
  0 siblings, 1 reply; 14+ messages in thread
From: Bin Meng @ 2017-09-04  3:59 UTC (permalink / raw)
  To: u-boot

Hi Heinrich,

On Fri, Sep 1, 2017 at 1:24 AM, Heinrich Schuchardt <xypron.glpk@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 <sjg@chromium.org> wrote:
>>> Hi Bin,
>>>
>>> On 31 August 2017 at 10:53, Bin Meng <bmeng.cn@gmail.com> wrote:
>>>> Hi Heinrich,
>>>>
>>>> On Thu, Aug 31, 2017 at 5:19 AM, Heinrich Schuchardt <xypron.glpk@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.glpk@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

^ permalink raw reply	[flat|nested] 14+ messages in thread

* [U-Boot] ** Can't read Driver Desriptor Block **
  2017-09-04  3:59               ` Bin Meng
@ 2017-09-04  5:41                 ` Heinrich Schuchardt
  2017-09-04  7:30                   ` Bin Meng
  0 siblings, 1 reply; 14+ messages in thread
From: Heinrich Schuchardt @ 2017-09-04  5:41 UTC (permalink / raw)
  To: u-boot

On 09/04/2017 05:59 AM, Bin Meng wrote:
> Hi Heinrich,
> 
> On Fri, Sep 1, 2017 at 1:24 AM, Heinrich Schuchardt <xypron.glpk@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 <sjg@chromium.org> wrote:
>>>> Hi Bin,
>>>>
>>>> On 31 August 2017 at 10:53, Bin Meng <bmeng.cn@gmail.com> wrote:
>>>>> Hi Heinrich,
>>>>>
>>>>> On Thu, Aug 31, 2017 at 5:19 AM, Heinrich Schuchardt <xypron.glpk@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.glpk@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 **

^ permalink raw reply	[flat|nested] 14+ messages in thread

* [U-Boot] ** Can't read Driver Desriptor Block **
  2017-09-04  5:41                 ` Heinrich Schuchardt
@ 2017-09-04  7:30                   ` Bin Meng
  2017-09-04  9:05                     ` Bin Meng
  0 siblings, 1 reply; 14+ messages in thread
From: Bin Meng @ 2017-09-04  7:30 UTC (permalink / raw)
  To: u-boot

Hi Heinrich,

On Mon, Sep 4, 2017 at 1:41 PM, Heinrich Schuchardt <xypron.glpk@gmx.de> wrote:
> On 09/04/2017 05:59 AM, Bin Meng wrote:
>> Hi Heinrich,
>>
>> On Fri, Sep 1, 2017 at 1:24 AM, Heinrich Schuchardt <xypron.glpk@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 <sjg@chromium.org> wrote:
>>>>> Hi Bin,
>>>>>
>>>>> On 31 August 2017 at 10:53, Bin Meng <bmeng.cn@gmail.com> wrote:
>>>>>> Hi Heinrich,
>>>>>>
>>>>>> On Thu, Aug 31, 2017 at 5:19 AM, Heinrich Schuchardt <xypron.glpk@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.glpk@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

I think you need pass "-hdb" to QEMU to enable ide 0:1.

[snip]

Regards,
Bin

^ permalink raw reply	[flat|nested] 14+ messages in thread

* [U-Boot] ** Can't read Driver Desriptor Block **
  2017-09-04  7:30                   ` Bin Meng
@ 2017-09-04  9:05                     ` Bin Meng
  0 siblings, 0 replies; 14+ messages in thread
From: Bin Meng @ 2017-09-04  9:05 UTC (permalink / raw)
  To: u-boot

Hi Heinrich,

On Mon, Sep 4, 2017 at 3:30 PM, Bin Meng <bmeng.cn@gmail.com> wrote:
> Hi Heinrich,
>
> On Mon, Sep 4, 2017 at 1:41 PM, Heinrich Schuchardt <xypron.glpk@gmx.de> wrote:
>> On 09/04/2017 05:59 AM, Bin Meng wrote:
>>> Hi Heinrich,
>>>
>>> On Fri, Sep 1, 2017 at 1:24 AM, Heinrich Schuchardt <xypron.glpk@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 <sjg@chromium.org> wrote:
>>>>>> Hi Bin,
>>>>>>
>>>>>> On 31 August 2017 at 10:53, Bin Meng <bmeng.cn@gmail.com> wrote:
>>>>>>> Hi Heinrich,
>>>>>>>
>>>>>>> On Thu, Aug 31, 2017 at 5:19 AM, Heinrich Schuchardt <xypron.glpk@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.glpk@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.
>>

Can you please try the v2 patch series @
http://patchwork.ozlabs.org/project/uboot/list/?series=1338?

Regards,
Bin

^ permalink raw reply	[flat|nested] 14+ messages in thread

end of thread, other threads:[~2017-09-04  9:05 UTC | newest]

Thread overview: 14+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-08-29 20:26 [U-Boot] ** Can't read Driver Desriptor Block ** Heinrich Schuchardt
2017-08-30  1:54 ` Bin Meng
2017-08-30  4:37   ` Heinrich Schuchardt
2017-08-30 21:19     ` Heinrich Schuchardt
2017-08-31  2:53       ` Bin Meng
2017-08-31 12:52         ` Simon Glass
2017-08-31 12:55           ` Bin Meng
2017-08-31 17:24             ` Heinrich Schuchardt
2017-09-04  3:59               ` Bin Meng
2017-09-04  5:41                 ` Heinrich Schuchardt
2017-09-04  7:30                   ` Bin Meng
2017-09-04  9:05                     ` Bin Meng
2017-08-30  6:34   ` Simon Glass
2017-08-30  6:44     ` Lothar Waßmann

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.