c635a56384
OvmfPkg/MptScsiDxe: Reset device on ExitBootServices()
...
This causes the device to forget about the reply frame. We allocated the
reply frame in EfiBootServicesData type memory, and code executing after
ExitBootServices() is permitted to overwrite it.
Ref: https://bugzilla.tianocore.org/show_bug.cgi?id=2390
Signed-off-by: Nikita Leshenko <nikita.leshchenko@oracle.com >
Reviewed-by: Laszlo Ersek <lersek@redhat.com >
Message-Id: <20200504210607.144434-13-nikita.leshchenko@oracle.com >
2020-05-05 20:43:02 +00:00
505812ae1d
OvmfPkg/MptScsiDxe: Implement the PassThru method
...
Machines should be able to boot after this commit. Tested with different
Linux distributions (Ubuntu, CentOS) and different Windows
versions (Windows 7, Windows 10, Server 2016).
Ref: https://bugzilla.tianocore.org/show_bug.cgi?id=2390
Signed-off-by: Nikita Leshenko <nikita.leshchenko@oracle.com >
Reviewed-by: Laszlo Ersek <lersek@redhat.com >
Message-Id: <20200504210607.144434-12-nikita.leshchenko@oracle.com >
[lersek@redhat.com: MPT_SCSI_DMA_ADDR_HIGH: drop redundant space char]
2020-05-05 20:43:02 +00:00
81cada9892
OvmfPkg/MptScsiDxe: Initialize hardware
...
Reset and send the IO controller initialization request. The reply is
read back to complete the doorbell function but it isn't useful to us
because it doesn't contain relevant data or status codes.
See "LSI53C1030 PCI-X to Dual Channel Ultra320 SCSI Multifunction
Controller" technical manual for more information.
Ref: https://bugzilla.tianocore.org/show_bug.cgi?id=2390
Signed-off-by: Nikita Leshenko <nikita.leshchenko@oracle.com >
Message-Id: <20200504210607.144434-11-nikita.leshchenko@oracle.com >
Reviewed-by: Laszlo Ersek <lersek@redhat.com >
2020-05-05 20:43:02 +00:00
ecdbdba636
OvmfPkg/MptScsiDxe: Set and restore PCI attributes
...
Enable the IO Space and Bus Mastering and restore the original values
when the device is stopped. This is a standard procedure in PCI
drivers.
Ref: https://bugzilla.tianocore.org/show_bug.cgi?id=2390
Signed-off-by: Nikita Leshenko <nikita.leshchenko@oracle.com >
Reviewed-by: Liran Alon <liran.alon@oracle.com >
Reviewed-by: Laszlo Ersek <lersek@redhat.com >
Message-Id: <20200504210607.144434-10-nikita.leshchenko@oracle.com >
2020-05-05 20:43:02 +00:00
da8c0b8f4d
OvmfPkg/MptScsiDxe: Open PciIo protocol for later use
...
This will give us an exclusive access to the PciIo of this device
after it was started and until is will be stopped.
Ref: https://bugzilla.tianocore.org/show_bug.cgi?id=2390
Signed-off-by: Nikita Leshenko <nikita.leshchenko@oracle.com >
Reviewed-by: Liran Alon <liran.alon@oracle.com >
Reviewed-by: Laszlo Ersek <lersek@redhat.com >
Message-Id: <20200504210607.144434-9-nikita.leshchenko@oracle.com >
2020-05-05 20:43:02 +00:00
f9941d31dd
OvmfPkg/MptScsiDxe: Build and decode DevicePath
...
Used to identify the individual disks in the hardware tree.
Ref: https://bugzilla.tianocore.org/show_bug.cgi?id=2390
Signed-off-by: Nikita Leshenko <nikita.leshchenko@oracle.com >
Reviewed-by: Liran Alon <liran.alon@oracle.com >
Reviewed-by: Laszlo Ersek <lersek@redhat.com >
Message-Id: <20200504210607.144434-8-nikita.leshchenko@oracle.com >
2020-05-05 20:43:02 +00:00
093cceaf79
OvmfPkg/MptScsiDxe: Report targets and one LUN
...
The controller supports up to 8 targets in practice (Not reported by the
controller, but based on the implementation of the virtual device),
report them in GetNextTarget and GetNextTargetLun. The firmware will
then try to communicate with them and create a block device for each one
that responds.
Support for multiple LUNs will be implemented in another series.
Ref: https://bugzilla.tianocore.org/show_bug.cgi?id=2390
Signed-off-by: Nikita Leshenko <nikita.leshchenko@oracle.com >
Reviewed-by: Laszlo Ersek <lersek@redhat.com >
Message-Id: <20200504210607.144434-7-nikita.leshchenko@oracle.com >
2020-05-05 20:43:02 +00:00
a53e5b4174
OvmfPkg/MptScsiDxe: Install stubbed EXT_SCSI_PASS_THRU
...
Support dynamic insertion and removal of the protocol
Ref: https://bugzilla.tianocore.org/show_bug.cgi?id=2390
Signed-off-by: Nikita Leshenko <nikita.leshchenko@oracle.com >
Reviewed-by: Laszlo Ersek <lersek@redhat.com >
Message-Id: <20200504210607.144434-6-nikita.leshchenko@oracle.com >
2020-05-05 20:43:02 +00:00
f47074425d
OvmfPkg/MptScsiDxe: Probe PCI devices and look for MptScsi
...
The MptScsiControllerSupported function is called on handles passed in
by the ConnectController() boot service and if the handle is the
lsi53c1030 controller the function would return success. A successful
return value will attach our driver to the device.
Ref: https://bugzilla.tianocore.org/show_bug.cgi?id=2390
Signed-off-by: Nikita Leshenko <nikita.leshchenko@oracle.com >
Reviewed-by: Laszlo Ersek <lersek@redhat.com >
Reviewed-by: Liran Alon <liran.alon@oracle.com >
Message-Id: <20200504210607.144434-5-nikita.leshchenko@oracle.com >
2020-05-05 20:43:02 +00:00
be7fcaa1c9
OvmfPkg/MptScsiDxe: Report name of driver
...
Install Component Name protocols to have a nice display name for the
driver in places such as UEFI shell.
Ref: https://bugzilla.tianocore.org/show_bug.cgi?id=2390
Signed-off-by: Nikita Leshenko <nikita.leshchenko@oracle.com >
Reviewed-by: Laszlo Ersek <lersek@redhat.com >
Reviewed-by: Jaben Carsey <jaben.carsey@intel.com >
Reviewed-by: Liran Alon <liran.alon@oracle.com >
Message-Id: <20200504210607.144434-4-nikita.leshchenko@oracle.com >
2020-05-05 20:43:02 +00:00
ad8f2d6b07
OvmfPkg/MptScsiDxe: Install DriverBinding Protocol
...
In order to probe and connect to the MptScsi device we need this
protocol. Currently it does nothing.
Ref: https://bugzilla.tianocore.org/show_bug.cgi?id=2390
Signed-off-by: Nikita Leshenko <nikita.leshchenko@oracle.com >
Reviewed-by: Laszlo Ersek <lersek@redhat.com >
Reviewed-by: Liran Alon <liran.alon@oracle.com >
Message-Id: <20200504210607.144434-3-nikita.leshchenko@oracle.com >
2020-05-05 20:43:02 +00:00
feec20b28d
OvmfPkg/MptScsiDxe: Create empty driver
...
In preparation for implementing LSI Fusion MPT SCSI devices, create a
basic scaffolding for a driver.
Ref: https://bugzilla.tianocore.org/show_bug.cgi?id=2390
Signed-off-by: Nikita Leshenko <nikita.leshchenko@oracle.com >
Reviewed-by: Liran Alon <liran.alon@oracle.com >
Reviewed-by: Laszlo Ersek <lersek@redhat.com >
Message-Id: <20200504210607.144434-2-nikita.leshchenko@oracle.com >
2020-05-05 20:43:02 +00:00