[PATCH] Fix IDE commands issued, fix endian issues, fix non MMIO

Heinrich Schuchardt xypron.glpk at gmx.de
Mon Apr 19 13:52:47 CEST 2021


On 24.02.21 22:55, Reinoud Zandijk wrote:
> Dear Heinrich,
>
> On Wed, Feb 24, 2021 at 06:57:08PM +0100, Heinrich Schuchardt wrote:
>> On 24.02.21 17:44, Reinoud Zandijk wrote:
>>>
>>> Fixes IDE issues found on the Malta board under Qemu:
>>>
>>> 1) DMA implied commands were sent to the controller in stead of the PIO
>>> variants. The rest of the code is DMA free and written for PIO operation.
>>>
>>> 2) direct pointer access was used to read and write the registers instead
>>> of the inb/inw/outb/outw functions/macros. Registers don't have to be
>>> memory mapped and ATA_CURR_BASE() does not have to return an offset from
>>> address zero.
>>>
>>> 3) Endian isues in ide_ident() and reading/writing data in general. Names
>>> were corrupted and sizes misreported.
>>
>> It is preferable to have each issue fixed in a separate patch.
>
> They are related; 2 and 3 are really one and 1 could in theory be separate but
> it won't work on its own.

Thanks for the background.

>
>>> Tested malta_defconfig and maltael_defconfig to work again in Qemu.
>>
>> What about the other architectures which can use the driver?
>
> As for testing, I compile tested an ARM board, edminiv2, successfully, but
> don't know how to invoke qemu for it. As for running the tests, my setup is
> not capable of running the tests since they seem to be for linux only.
>
> Does the automatic testing check if disks are indeed found correctly and
> checking reading or writing to a disk image?

qemu-x86_64_defconfig and qemu-x86_defconfig have CONFIG_CMD_IDE=y.

Actually without your patch qemu-x86 cannot read the partition table
from an IDE device. With your patch it works fine.

This was my QEMU command:

   qemu-system-i386 -bios u-boot.rom -nographic sct-i386.img

Tested-by: Heinrich Schuchardt <xypron.glpk at gmx.de>


More information about the U-Boot mailing list