Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1316188 > unrolled thread
| Started by | Ocean HY1 He <hehy1@lenovo.com> |
|---|---|
| First post | 2016-01-25 04:30 +0100 |
| Last post | 2016-01-26 14:30 +0100 |
| Articles | 5 — 3 participants |
Back to article view | Back to linux.kernel
[PATCH] Let AHCI dirver skip Lenovo SWRAID controller Ocean HY1 He <hehy1@lenovo.com> - 2016-01-25 04:30 +0100
Re: [PATCH] Let AHCI dirver skip Lenovo SWRAID controller Christoph Hellwig <hch@infradead.org> - 2016-01-25 11:00 +0100
Re: [PATCH] Let AHCI dirver skip Lenovo SWRAID controller One Thousand Gnomes <gnomes@lxorguk.ukuu.org.uk> - 2016-01-25 14:20 +0100
Re: [PATCH] Let AHCI dirver skip Lenovo SWRAID controller Ocean HY1 He <hehy1@lenovo.com> - 2016-01-26 14:00 +0100
Re: [PATCH] Let AHCI dirver skip Lenovo SWRAID controller Christoph Hellwig <hch@infradead.org> - 2016-01-26 14:30 +0100
| From | Ocean HY1 He <hehy1@lenovo.com> |
|---|---|
| Date | 2016-01-25 04:30 +0100 |
| Subject | [PATCH] Let AHCI dirver skip Lenovo SWRAID controller |
| Message-ID | <qUG0N-6aS-1@gated-at.bofh.it> |
Lenovo SWRAID solution is based on Intel Non-RSTE RAID controller which
is called Lenovo SWRAID controller by set Lenovo dedicated PCI
SVID:SDID.
Because AHCI driver now take control this Lenovo SWRAID controller for
MDRAID, Lenovo SWRAID driver fails to load later. It's not proper to
disable AHCI driver, because system has SATA contoller used for SATA
DVD, M.2 etc. There is no chance to load Lenovo SWRAID first, because
almost all Linux distros load AHCI driver first during installation.
As default, when Lenovo SWRAID controller is detected, let AHCI driver
skip it thus MDRAID is disabled. Use the boot option 'ahci.lenovo_swraid=0'
could disable Lenovo SWRAID.
Signed-off-by: Ocean He <hehy1@lenovo.com>
---
drivers/ata/ahci.c | 33 +++++++++++++++++++++++++++++++++
1 file changed, 33 insertions(+)
diff --git a/drivers/ata/ahci.c b/drivers/ata/ahci.c
index 594fcab..8ec51a6 100644
--- a/drivers/ata/ahci.c
+++ b/drivers/ata/ahci.c
@@ -557,6 +557,35 @@ static int marvell_enable = 1;
module_param(marvell_enable, int, 0644);
MODULE_PARM_DESC(marvell_enable, "Marvell SATA via AHCI (1 = enabled)");
+static int lenovo_swraid = 1;
+module_param(lenovo_swraid, int, 0644);
+MODULE_PARM_DESC(lenovo_swraid, "SWRAID via SATA(RAID mode) (1 = enable (default))");
+
+static int lenovo_swraid_enable(struct pci_dev *pdev)
+{
+ if (!lenovo_swraid)
+ return 0;
+
+ /* Lenovo Gen6 Servers */
+ if (pdev->vendor == PCI_VENDOR_ID_INTEL &&
+ (pdev->device == 0xa186 || pdev->device == 0xa206) &&
+ pdev->subsystem_vendor == 0x1d49) {
+ dev_info(&pdev->dev,
+ "Skip SATA controller for Lenovo SWRAID.\n");
+ return -ENODEV;
+ }
+
+ /* Lenovo Gen5 Servers */
+ if (pdev->vendor == PCI_VENDOR_ID_INTEL &&
+ pdev->device == 0x8d06 &&
+ pdev->subsystem_vendor == 0x17aa) {
+ dev_info(&pdev->dev,
+ "Skip SATA controller for Lenovo SWRAID.\n");
+ return -ENODEV;
+ }
+
+ return 0;
+}
static void ahci_pci_save_initial_config(struct pci_dev *pdev,
struct ahci_host_priv *hpriv)
@@ -1466,6 +1495,10 @@ static int ahci_init_one(struct pci_dev *pdev, const struct pci_device_id *ent)
if (pdev->vendor == PCI_VENDOR_ID_MARVELL && !marvell_enable)
return -ENODEV;
+ /* Let AHCI driver skip the Lenovo SWRAID controller. */
+ if (lenovo_swraid_enable(pdev))
+ return -ENODEV;
+
/* Apple BIOS on MCP89 prevents us using AHCI */
if (is_mcp89_apple(pdev))
ahci_mcp89_apple_enable(pdev);
--
1.8.3.1
[toc] | [next] | [standalone]
| From | Christoph Hellwig <hch@infradead.org> |
|---|---|
| Date | 2016-01-25 11:00 +0100 |
| Message-ID | <qUM6f-20J-25@gated-at.bofh.it> |
| In reply to | #1316188 |
On Mon, Jan 25, 2016 at 03:11:40AM +0000, Ocean HY1 He wrote: > Lenovo SWRAID solution is based on Intel Non-RSTE RAID controller which > is called Lenovo SWRAID controller by set Lenovo dedicated PCI > SVID:SDID. > > Because AHCI driver now take control this Lenovo SWRAID controller for > MDRAID, Lenovo SWRAID driver fails to load later. And that's a good thing!
[toc] | [prev] | [next] | [standalone]
| From | One Thousand Gnomes <gnomes@lxorguk.ukuu.org.uk> |
|---|---|
| Date | 2016-01-25 14:20 +0100 |
| Message-ID | <qUPdN-4ol-49@gated-at.bofh.it> |
| In reply to | #1316188 |
On Mon, 25 Jan 2016 03:11:40 +0000 Ocean HY1 He <hehy1@lenovo.com> wrote: > Lenovo SWRAID solution is based on Intel Non-RSTE RAID controller which > is called Lenovo SWRAID controller by set Lenovo dedicated PCI > SVID:SDID. > > Because AHCI driver now take control this Lenovo SWRAID controller for > MDRAID, Lenovo SWRAID driver fails to load later. It's not proper to > disable AHCI driver, because system has SATA contoller used for SATA > DVD, M.2 etc. There is no chance to load Lenovo SWRAID first, because > almost all Linux distros load AHCI driver first during installation. > > As default, when Lenovo SWRAID controller is detected, let AHCI driver > skip it thus MDRAID is disabled. Use the boot option 'ahci.lenovo_swraid=0' > could disable Lenovo SWRAID. You need to submit the Lenovo SWRAID driver to the kernel first. Otherwise this breaks things. Alan
[toc] | [prev] | [next] | [standalone]
| From | Ocean HY1 He <hehy1@lenovo.com> |
|---|---|
| Date | 2016-01-26 14:00 +0100 |
| Message-ID | <qVbnZ-4eF-25@gated-at.bofh.it> |
| In reply to | #1316692 |
Hi Alan, Thanks for your comments! Lenovo SWRAID driver is a closed source driver at this time, I am afraid it's not possible to submit it to kernel. This patch is very important and critical for Lenovo next generation Servers. I have tried to make sure this patch only impacts Lenovo dedicated hardware and add a on/off boot option to end user who may still wants using open source SWRAID(such as MDRAID). I am a newbie to submit patch to kernel, so I am not so clear about what my patch breaks. Could you kindly explain that and is there a workaround or solution to avoid the break? Thanks a lot! Ocean. On 01/25/2016 09:18 PM, One Thousand Gnomes wrote: > On Mon, 25 Jan 2016 03:11:40 +0000 > Ocean HY1 He <hehy1@lenovo.com> wrote: > >> Lenovo SWRAID solution is based on Intel Non-RSTE RAID controller which >> is called Lenovo SWRAID controller by set Lenovo dedicated PCI >> SVID:SDID. >> >> Because AHCI driver now take control this Lenovo SWRAID controller for >> MDRAID, Lenovo SWRAID driver fails to load later. It's not proper to >> disable AHCI driver, because system has SATA contoller used for SATA >> DVD, M.2 etc. There is no chance to load Lenovo SWRAID first, because >> almost all Linux distros load AHCI driver first during installation. >> >> As default, when Lenovo SWRAID controller is detected, let AHCI driver >> skip it thus MDRAID is disabled. Use the boot option 'ahci.lenovo_swraid=0' >> could disable Lenovo SWRAID. > > You need to submit the Lenovo SWRAID driver to the kernel first. > Otherwise this breaks things. > > Alan >
[toc] | [prev] | [next] | [standalone]
| From | Christoph Hellwig <hch@infradead.org> |
|---|---|
| Date | 2016-01-26 14:30 +0100 |
| Message-ID | <qVbR0-4Hb-11@gated-at.bofh.it> |
| In reply to | #1317868 |
On Tue, Jan 26, 2016 at 12:42:43PM +0000, Ocean HY1 He wrote: > Hi Alan, > > Thanks for your comments! > > Lenovo SWRAID driver is a closed source driver at this time, I am afraid > it's not possible to submit it to kernel. So you're violating our copyright and want help for that? Be ashamed! > This patch is very important and critical for Lenovo next generation > Servers. I have tried to make sure this patch only impacts Lenovo > dedicated hardware and add a on/off boot option to end user who may > still wants using open source SWRAID(such as MDRAID). The right ting is to always use mdraid and contribute the lenovo superblock format to it, similar to how we support half a dozen other non-native formats.
[toc] | [prev] | [standalone]
Back to top | Article view | linux.kernel
csiph-web