lkml.org 
[lkml]   [2023]   [Nov]   [18]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 14/34] PCI: hv: switch hv_get_dom_num() to use atomic find_bit()
    Date
    The function traverses bitmap with for_each_clear_bit() just to allocate
    a bit atomically. We can do it better with a dedicated find_and_set_bit().

    Signed-off-by: Yury Norov <yury.norov@gmail.com>
    ---
    drivers/pci/controller/pci-hyperv.c | 7 ++-----
    1 file changed, 2 insertions(+), 5 deletions(-)

    diff --git a/drivers/pci/controller/pci-hyperv.c b/drivers/pci/controller/pci-hyperv.c
    index 30c7dfeccb16..033b1fb7f4eb 100644
    --- a/drivers/pci/controller/pci-hyperv.c
    +++ b/drivers/pci/controller/pci-hyperv.c
    @@ -3605,12 +3605,9 @@ static u16 hv_get_dom_num(u16 dom)
    if (test_and_set_bit(dom, hvpci_dom_map) == 0)
    return dom;

    - for_each_clear_bit(i, hvpci_dom_map, HVPCI_DOM_MAP_SIZE) {
    - if (test_and_set_bit(i, hvpci_dom_map) == 0)
    - return i;
    - }
    + i = find_and_set_bit(hvpci_dom_map, HVPCI_DOM_MAP_SIZE);

    - return HVPCI_DOM_INVALID;
    + return i < HVPCI_DOM_MAP_SIZE ? i : HVPCI_DOM_INVALID;
    }

    /**
    --
    2.39.2
    \
     
     \ /
      Last update: 2023-11-20 14:04    [W:2.899 / U:1.524 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site