powerpc/powernv/sriov: Move M64 BAR allocation into a helper
I want to refactor the loop this code is currently inside of. Hoist it on out. Signed-off-by: Oliver O'Halloran <oohall@gmail.com> Reviewed-by: Alexey Kardashevskiy <aik@ozlabs.ru> Signed-off-by: Michael Ellerman <mpe@ellerman.id.au> Link: https://lore.kernel.org/r/20200722065715.1432738-13-oohall@gmail.com
This commit is contained in:
parent
052da31d45
commit
39efc03e3e
1 changed files with 20 additions and 11 deletions
|
@ -412,6 +412,23 @@ out:
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int pnv_pci_alloc_m64_bar(struct pnv_phb *phb, struct pnv_iov_data *iov)
|
||||||
|
{
|
||||||
|
int win;
|
||||||
|
|
||||||
|
do {
|
||||||
|
win = find_next_zero_bit(&phb->ioda.m64_bar_alloc,
|
||||||
|
phb->ioda.m64_bar_idx + 1, 0);
|
||||||
|
|
||||||
|
if (win >= phb->ioda.m64_bar_idx + 1)
|
||||||
|
return -1;
|
||||||
|
} while (test_and_set_bit(win, &phb->ioda.m64_bar_alloc));
|
||||||
|
|
||||||
|
set_bit(win, iov->used_m64_bar_mask);
|
||||||
|
|
||||||
|
return win;
|
||||||
|
}
|
||||||
|
|
||||||
static int pnv_pci_vf_assign_m64(struct pci_dev *pdev, u16 num_vfs)
|
static int pnv_pci_vf_assign_m64(struct pci_dev *pdev, u16 num_vfs)
|
||||||
{
|
{
|
||||||
struct pnv_iov_data *iov;
|
struct pnv_iov_data *iov;
|
||||||
|
@ -439,17 +456,9 @@ static int pnv_pci_vf_assign_m64(struct pci_dev *pdev, u16 num_vfs)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
for (j = 0; j < m64_bars; j++) {
|
for (j = 0; j < m64_bars; j++) {
|
||||||
|
win = pnv_pci_alloc_m64_bar(phb, iov);
|
||||||
/* allocate a window ID for this BAR */
|
if (win < 0)
|
||||||
do {
|
goto m64_failed;
|
||||||
win = find_next_zero_bit(&phb->ioda.m64_bar_alloc,
|
|
||||||
phb->ioda.m64_bar_idx + 1, 0);
|
|
||||||
|
|
||||||
if (win >= phb->ioda.m64_bar_idx + 1)
|
|
||||||
goto m64_failed;
|
|
||||||
} while (test_and_set_bit(win, &phb->ioda.m64_bar_alloc));
|
|
||||||
set_bit(win, iov->used_m64_bar_mask);
|
|
||||||
|
|
||||||
|
|
||||||
if (iov->m64_single_mode) {
|
if (iov->m64_single_mode) {
|
||||||
int pe_num = iov->vf_pe_arr[j].pe_number;
|
int pe_num = iov->vf_pe_arr[j].pe_number;
|
||||||
|
|
Loading…
Add table
Reference in a new issue