Re: [PATCH 1/2] MdeModulePkg/SataControllerDxe: Add support for drives in RAID mode


Vitaly Cheptsov
 

Hello Hao,

This is for the case when the drives are not used as a RAID, but the controller is initialised in RAID mode. However, you are right that if a dedicated RAID driver is present, it is best to use it instead. To support both cases can we introduce an off-by-default PCD (e.g. TreatRaidAsSata) to workaround this?

Best regards,
Vitaly

On 14 Dec 2020, at 09:22, Wu, Hao A <hao.a.wu@...> wrote:



-----Original Message-----
From: Vitaly Cheptsov <cheptsov@...>
Sent: Friday, December 11, 2020 5:25 PM
To: devel@edk2.groups.io
Cc: Vitaly Cheptsov <cheptsov@...>; Wang, Jian J
<jian.j.wang@...>; Wu, Hao A <hao.a.wu@...>; Albecki,
Mateusz <mateusz.albecki@...>; Laszlo Ersek <lersek@...>
Subject: [PATCH 1/2] MdeModulePkg/SataControllerDxe: Add support for
drives in RAID mode

REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3118

This resolves the problem of using drivers connected to Intel G33 builtin
SATA controller when run from DuetPkg when it can only be configured in
RAID mode through the firmware settings.

Hello Vitaly,

If my understanding is correct, this driver (SataControllerDxe) and the
AtaAtapiPassThru driver are written for non-RAID case only.

Both drivers (especially AtaAtapiPassThru) do not distinguish logic/physical
SCSI channels, which I think only works for the non-RAID case. I am not sure if
this patch series will have an impact to existing RAID drivers.

Best Regards,
Hao Wu



Cc: Jian J Wang <jian.j.wang@...>
Cc: Hao A Wu <hao.a.wu@...>
Cc: Mateusz Albecki <mateusz.albecki@...>
Cc: Laszlo Ersek <lersek@...>
Signed-off-by: Vitaly Cheptsov <cheptsov@...>
---
MdeModulePkg/Bus/Pci/SataControllerDxe/SataController.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/MdeModulePkg/Bus/Pci/SataControllerDxe/SataController.c
b/MdeModulePkg/Bus/Pci/SataControllerDxe/SataController.c
index ab06e2833c..301335c967 100644
--- a/MdeModulePkg/Bus/Pci/SataControllerDxe/SataController.c
+++ b/MdeModulePkg/Bus/Pci/SataControllerDxe/SataController.c
@@ -324,7 +324,7 @@ SataControllerSupported (
return EFI_UNSUPPORTED;
}

- if (IS_PCI_IDE (&PciData) || IS_PCI_SATADPA (&PciData)) {
+ if (IS_PCI_IDE (&PciData) || IS_PCI_SATADPA (&PciData) || IS_PCI_RAID
+ (&PciData)) {
return EFI_SUCCESS;
}

@@ -465,7 +465,7 @@ SataControllerStart (
if (IS_PCI_IDE (&PciData)) {
Private->IdeInit.ChannelCount = IDE_MAX_CHANNEL;
Private->DeviceCount = IDE_MAX_DEVICES;
- } else if (IS_PCI_SATADPA (&PciData)) {
+ } else if (IS_PCI_SATADPA (&PciData) || IS_PCI_RAID (&PciData)) {
//
// Read Ports Implemented(PI) to calculate max port number (0 based).
//
--
2.24.3 (Apple Git-128)

Join devel@edk2.groups.io to automatically receive all group messages.