mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-03 15:53:54 -06:00
hw/nvme: separate identify data for sec. ctrl list
Secondary controller list for virtualization has been managed by Identify Secondary Controller List data structure with NvmeSecCtrlList where up to 127 secondary controller entries can be managed. The problem hasn't arisen so far because NVME_MAX_VFS has been 127. This patch separated identify data itself from the actual secondary controller list managed by controller to support more than 127 secondary controllers with the following patch. This patch reused NvmeSecCtrlEntry structure to manage all the possible secondary controllers, and copy entries to identify data structure when the command comes in. Reviewed-by: Klaus Jensen <k.jensen@samsung.com> Signed-off-by: Minwoo Im <minwoo.im@samsung.com> Signed-off-by: Klaus Jensen <k.jensen@samsung.com>
This commit is contained in:
parent
6471556500
commit
1a494d119a
3 changed files with 22 additions and 21 deletions
|
@ -17,13 +17,13 @@
|
|||
static int nvme_subsys_reserve_cntlids(NvmeCtrl *n, int start, int num)
|
||||
{
|
||||
NvmeSubsystem *subsys = n->subsys;
|
||||
NvmeSecCtrlList *list = &n->sec_ctrl_list;
|
||||
NvmeSecCtrlEntry *list = n->sec_ctrl_list;
|
||||
NvmeSecCtrlEntry *sctrl;
|
||||
int i, cnt = 0;
|
||||
|
||||
for (i = start; i < ARRAY_SIZE(subsys->ctrls) && cnt < num; i++) {
|
||||
if (!subsys->ctrls[i]) {
|
||||
sctrl = &list->sec[cnt];
|
||||
sctrl = &list[cnt];
|
||||
sctrl->scid = cpu_to_le16(i);
|
||||
subsys->ctrls[i] = SUBSYS_SLOT_RSVD;
|
||||
cnt++;
|
||||
|
@ -36,12 +36,12 @@ static int nvme_subsys_reserve_cntlids(NvmeCtrl *n, int start, int num)
|
|||
static void nvme_subsys_unreserve_cntlids(NvmeCtrl *n)
|
||||
{
|
||||
NvmeSubsystem *subsys = n->subsys;
|
||||
NvmeSecCtrlList *list = &n->sec_ctrl_list;
|
||||
NvmeSecCtrlEntry *list = n->sec_ctrl_list;
|
||||
NvmeSecCtrlEntry *sctrl;
|
||||
int i, cntlid;
|
||||
|
||||
for (i = 0; i < n->params.sriov_max_vfs; i++) {
|
||||
sctrl = &list->sec[i];
|
||||
sctrl = &list[i];
|
||||
cntlid = le16_to_cpu(sctrl->scid);
|
||||
|
||||
if (cntlid) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue