Message ID | 20231203193307.542794-13-yury.norov@gmail.com (mailing list archive) |
---|---|
State | Handled Elsewhere |
Delegated to: | Bjorn Helgaas |
Headers | show |
Series | bitops: add atomic find_bit() operations | expand |
On Sun, Dec 03, 2023 at 11:32:46AM -0800, Yury Norov wrote: > 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> > Reviewed-by: Michael Kelley <mhklinux@outlook.com> Acked-by: Wei Liu <wei.liu@kernel.org>
On Sun, Dec 03, 2023 at 11:32:46AM -0800, Yury Norov wrote: > 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(). No objection from me, but please tweak the subject line to match previous hv history, i.e., capitalize the first word after the prefix: PCI: hv: Use atomic find_and_set_bit() I think there's value in using similar phrasing across the whole series. Some subjects say "optimize xyz()", some say "rework xyz()", some "rework xyz()", etc. I think it's more informative to include the "atomic" and "find_bit()" ideas in the subject than the specific functions that *use* it. I also like how some of the other commit logs clearly say what the patch does, e.g., "Simplify by using dedicated find_and_set_bit()", as opposed to just "We can do it better ..." which technically doesn't say what the patch does. Very nice simplification in all these users, thanks for doing it! I assume you'll merge these all together since they depend on [01/35], so: Acked-by: Bjorn Helgaas <bhelgaas@google.com> > Signed-off-by: Yury Norov <yury.norov@gmail.com> > Reviewed-by: Michael Kelley <mhklinux@outlook.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.40.1 >
On Mon, Dec 04, 2023 at 01:14:27PM -0600, Bjorn Helgaas wrote: > On Sun, Dec 03, 2023 at 11:32:46AM -0800, Yury Norov wrote: > > 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(). > > No objection from me, but please tweak the subject line to match > previous hv history, i.e., capitalize the first word after the prefix: > > PCI: hv: Use atomic find_and_set_bit() > > I think there's value in using similar phrasing across the whole > series. Some subjects say "optimize xyz()", some say "rework xyz()", > some "rework xyz()", etc. I think it's more informative to include > the "atomic" and "find_bit()" ideas in the subject than the specific > functions that *use* it. > > I also like how some of the other commit logs clearly say what the > patch does, e.g., "Simplify by using dedicated find_and_set_bit()", as > opposed to just "We can do it better ..." which technically doesn't > say what the patch does. > > Very nice simplification in all these users, thanks for doing it! > > I assume you'll merge these all together since they depend on [01/35], > so: > > Acked-by: Bjorn Helgaas <bhelgaas@google.com> Thank you Bjorn! Now as many people asked to move their subsystems patch together with #1, I think, if no objections, it's simpler to pull all the series in bitmap-for-next. I'm going to align commit messages wording, as you suggested, address some other comments, and will send v3 this weekend. Thanks, Yury
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; } /**