On 2014-11-06 00:01:28, Tian, Feng wrote: > Hi, Reza > > I did a bigger scope test on your proposed patch. it will bring > issue when a HDD is in primary master and a cdrom is in primary > slave at Intel DQ57 platform.. The cdrom may be identified as HDD > and will get a ABORT error for IDENTIFY cmd. > > To solve this issue, I modified your code like attachment (set > device select before and after DIAG cmd rather than only before this > cmd). This way works at my test platform. Please review and help > test it at Qemu.
Can you add Contributed-under and Signed-off-by so Reza might be able to merge your change into the patch? -Jordan > -----Original Message----- > From: reza.jel...@tuhh.de [mailto:reza.jel...@tuhh.de] > Sent: Thursday, October 23, 2014 07:02 > To: edk2-devel@lists.sourceforge.net > Cc: Zeng, Star; Tian, Feng; ler...@redhat.com; asava....@gmail.com; Reza > Jelveh > Subject: [PATCH v3 5/5] MdeModulePkg; IdeMode select master/slave before > diagnostics command > > From: Reza Jelveh <reza.jel...@tuhh.de> > > Some Ide controllers only update ID fields such as sector information on > specific commands such as the DIAG command. > > The master/slave device is therefore selected before sending the DIAG command > otherwise reading the IDE registers yields the masters ID fields. > > Contributed-under: TianoCore Contribution Agreement 1.0 > Signed-off-by: Reza Jelveh <reza.jel...@tuhh.de> > --- > MdeModulePkg/Bus/Ata/AtaAtapiPassThru/IdeMode.c | 9 +++++---- > 1 file changed, 5 insertions(+), 4 deletions(-) > > diff --git a/MdeModulePkg/Bus/Ata/AtaAtapiPassThru/IdeMode.c > b/MdeModulePkg/Bus/Ata/AtaAtapiPassThru/IdeMode.c > index e5beea6..35330e2 100644 > --- a/MdeModulePkg/Bus/Ata/AtaAtapiPassThru/IdeMode.c > +++ b/MdeModulePkg/Bus/Ata/AtaAtapiPassThru/IdeMode.c > @@ -2593,6 +2593,11 @@ DetectAndConfigIdeDevice ( > > for (IdeDevice = 0; IdeDevice < EfiIdeMaxDevice; IdeDevice++) { > // > + // Select Master or Slave device to get the return signature for ATA > DEVICE DIAGNOSTIC cmd. > + // > + IdeWritePortB (PciIo, IdeRegisters->Head, (UINT8)((IdeDevice << 4) > + | 0xe0)); > + > + // > // Send ATA Device Execut Diagnostic command. > // This command should work no matter DRDY is ready or not > // > @@ -2605,10 +2610,6 @@ DetectAndConfigIdeDevice ( > } > > // > - // Select Master or Slave device to get the return signature for ATA > DEVICE DIAGNOSTIC cmd. > - // > - IdeWritePortB (PciIo, IdeRegisters->Head, (UINT8)((IdeDevice << 4) | > 0xe0)); > - // > // Stall for 1 milliseconds. > // > MicroSecondDelay (1000); > -- > 2.1.1 > > > > ------------------------------------------------------------------------------ > > > _______________________________________________ > edk2-devel mailing list > edk2-devel@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/edk2-devel ------------------------------------------------------------------------------ Dive into the World of Parallel Programming. The Go Parallel Website, sponsored by Intel and developed in partnership with Slashdot Media, is your hub for all things parallel software development, from weekly thought leadership blogs to news, videos, case studies, tutorials and more. Take a look and join the conversation now. http://goparallel.sourceforge.net/ _______________________________________________ edk2-devel mailing list edk2-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/edk2-devel