Simultaneous use of physical devices and logical RAID devices may be dangerous. Signed-off-by: Ivan Mironov <mironov.ivan@xxxxxxxxx> --- drivers/scsi/hpsa.c | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/drivers/scsi/hpsa.c b/drivers/scsi/hpsa.c index 60f1f7949d8d..0b5b3a651b70 100644 --- a/drivers/scsi/hpsa.c +++ b/drivers/scsi/hpsa.c @@ -4364,10 +4364,11 @@ static int hpsa_nvram_hba_flag_enabled(struct ctlr_info *h, bool *flag_enabled) return rc; } -static int hpsa_update_nvram_hba_mode(struct ctlr_info *h) +static int hpsa_update_nvram_hba_mode(struct ctlr_info *h, u32 nlogicals) { int rc; bool flag_enabled; + bool ignore; if (!hpsa_use_nvram_hba_flag) return 0; @@ -4378,10 +4379,13 @@ static int hpsa_update_nvram_hba_mode(struct ctlr_info *h) if (rc) return rc; - dev_info(&h->pdev->dev, "NVRAM HBA flag: %s\n", - flag_enabled ? "enabled" : "disabled"); + ignore = flag_enabled && nlogicals; - h->nvram_hba_mode_enabled = flag_enabled; + dev_info(&h->pdev->dev, "NVRAM HBA flag: %s%s\n", + flag_enabled ? "enabled" : "disabled", + ignore ? " (ignored because of existing logical devices)" : ""); + + h->nvram_hba_mode_enabled = flag_enabled && !ignore; return 0; } @@ -4442,7 +4446,7 @@ static void hpsa_update_scsi_devices(struct ctlr_info *h) __func__); } - if (hpsa_update_nvram_hba_mode(h)) { + if (hpsa_update_nvram_hba_mode(h, nlogicals)) { h->drv_req_rescan = 1; goto out; } -- 2.19.2