[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH] xen/lib: introduce generic find next bit operations
On 26.01.2024 17:08, Julien Grall wrote: > On 26/01/2024 15:58, Oleksii wrote: >> On Fri, 2024-01-26 at 13:20 +0000, Julien Grall wrote: >>> On 26/01/2024 12:20, Oleksii Kurochko wrote: >>>> find-next-bit.c is common for Arm64, PPC and RISCV64, >>>> so it is moved to xen/lib. >>>> >>>> Suggested-by: Jan Beulich <jbeulich@xxxxxxxx> >>>> Signed-off-by: Oleksii Kurochko <oleksii.kurochko@xxxxxxxxx> >>>> --- >>>> docs/misra/exclude-list.json | 4 - >>>> xen/arch/arm/arm64/lib/Makefile | 2 +- >>>> xen/arch/arm/include/asm/arm64/bitops.h | 48 -------- >>>> xen/arch/ppc/include/asm/bitops.h | 115 ------------- >>>> ----- >>>> xen/include/xen/bitops.h | 48 ++++++++ >>>> xen/lib/Makefile | 1 + >>>> .../find_next_bit.c => lib/find-next-bit.c} | 0 >>>> 7 files changed, 50 insertions(+), 168 deletions(-) >>>> rename xen/{arch/arm/arm64/lib/find_next_bit.c => lib/find-next- >>>> bit.c} (100%) >>>> >>>> diff --git a/docs/misra/exclude-list.json b/docs/misra/exclude- >>>> list.json >>>> index 7971d0e70f..7fe02b059d 100644 >>>> --- a/docs/misra/exclude-list.json >>>> +++ b/docs/misra/exclude-list.json >>>> @@ -13,10 +13,6 @@ >>>> "rel_path": "arch/arm/arm64/insn.c", >>>> "comment": "Imported on Linux, ignore for now" >>>> }, >>>> - { >>>> - "rel_path": "arch/arm/arm64/lib/find_next_bit.c", >>> >>> Rather than removing the section, I was expecting the rel_path to be >>> updated. Can you explain why you think the exclusion is not >>> necessary? >> I considered simply updating the path to xen/lib/find-next-bit.c, but >> ultimately opted to remove it. This decision was based on the fact that >> the line in question checks for a file that no longer exists. > > That's not quite correct. The file still exists but with a different name. > >> If it's >> preferable to update the rel_path with xen/lib/find-next-bit.c, I'm >> more than willing to make that adjustment. > > The problem is by removing the file, you effectively tell Eclair to > report any MISRA error. I don't believe this is what we want here. > > But if the other agrees with you, then this change ought to be explained > in the commit message. Imo it can only be removed (rather than updated) if the reason for adding has meanwhile gone away. I don't think that's the case, though. > To me the key is the commit message should contain enough information > for the reviewer to understand what/why you are doing. All the changes I > pointed out are definitely not just a normal code movement. >> >>> >>>> - "comment": "Imported from Linux, ignore for now" >>>> - }, >>>> { >>>> "rel_path": "arch/x86/acpi/boot.c", >>>> "comment": "Imported from Linux, ignore for now" >>>> diff --git a/xen/arch/arm/arm64/lib/Makefile >>>> b/xen/arch/arm/arm64/lib/Makefile >>>> index 1b9c7a95e6..66cfac435a 100644 >>>> --- a/xen/arch/arm/arm64/lib/Makefile >>>> +++ b/xen/arch/arm/arm64/lib/Makefile >>>> @@ -1,4 +1,4 @@ >>>> obj-y += memcpy.o memcmp.o memmove.o memset.o memchr.o >>>> obj-y += clear_page.o >>>> -obj-y += bitops.o find_next_bit.o >>>> +obj-y += bitops.o >>>> obj-y += strchr.o strcmp.o strlen.o strncmp.o strnlen.o strrchr.o >>>> diff --git a/xen/arch/arm/include/asm/arm64/bitops.h >>>> b/xen/arch/arm/include/asm/arm64/bitops.h >>>> index d85a49bca4..f9dd066237 100644 >>>> --- a/xen/arch/arm/include/asm/arm64/bitops.h >>>> +++ b/xen/arch/arm/include/asm/arm64/bitops.h >>>> @@ -36,57 +36,9 @@ static inline int flsl(unsigned long x) >>>> >>>> /* Based on linux/include/asm-generic/bitops/find.h */ >>>> >>>> -#ifndef find_next_bit >>>> -/** >>>> - * find_next_bit - find the next set bit in a memory region >>>> - * @addr: The address to base the search on >>>> - * @offset: The bitnumber to start searching at >>>> - * @size: The bitmap size in bits >>>> - */ >>>> -extern unsigned long find_next_bit(const unsigned long *addr, >>>> unsigned long >>>> - size, unsigned long offset); >>>> -#endif >>>> - >>>> -#ifndef find_next_zero_bit >>>> -/** >>>> - * find_next_zero_bit - find the next cleared bit in a memory >>>> region >>>> - * @addr: The address to base the search on >>>> - * @offset: The bitnumber to start searching at >>>> - * @size: The bitmap size in bits >>>> - */ >>>> -extern unsigned long find_next_zero_bit(const unsigned long *addr, >>>> unsigned >>>> - long size, unsigned long offset); >>>> -#endif >>>> - >>>> -#ifdef CONFIG_GENERIC_FIND_FIRST_BIT >>>> - >>>> -/** >>>> - * find_first_bit - find the first set bit in a memory region >>>> - * @addr: The address to start the search at >>>> - * @size: The maximum size to search >>>> - * >>>> - * Returns the bit number of the first set bit. >>>> - */ >>>> -extern unsigned long find_first_bit(const unsigned long *addr, >>>> - unsigned long size); >>>> - >>>> -/** >>>> - * find_first_zero_bit - find the first cleared bit in a memory >>>> region >>>> - * @addr: The address to start the search at >>>> - * @size: The maximum size to search >>>> - * >>>> - * Returns the bit number of the first cleared bit. >>>> - */ >>>> -extern unsigned long find_first_zero_bit(const unsigned long >>>> *addr, >>>> - unsigned long size); >>>> -#else /* CONFIG_GENERIC_FIND_FIRST_BIT */ >>>> - >>>> #define find_first_bit(addr, size) find_next_bit((addr), (size), >>>> 0) >>>> #define find_first_zero_bit(addr, size) >>>> find_next_zero_bit((addr), (size), 0) >>>> >>>> -#endif /* CONFIG_GENERIC_FIND_FIRST_BIT */ >>> >>> AFAICT, you are changing the behavior for Arm64 without explaining >>> why. >>> Before, it was possible to set CONFIG_GENERIC_FIND_FIRST_BIT so the >>> generic version of find_first_*_bit are used. This is not possible >>> anymore with your change. >>> >>> Looking at Linux, I see that arm64 is now selecting >>> GENERIC_FIND_FIRST_BIT (see [1]). So I would argue, we should not >>> define >>> find_first_bit(). That said, that's probably a separate patch. >>> >>> For now, you want to explain why GENERIC_FIND_FIRST_BIT is dropped. >> I chose to remove it because I couldn't find any usage or configuration >> setting for this in Xen (Arm). > > Right. My point is the commit message can lead to think this is a simple > code movement and there are no change of behavior. > > It wasn't clear to me whether this was done on purpose or not. It looks > like it was and therefore should really be explained in the commit message. > >> >> I can add "#ifdef GENERIC_FIND_FIRST_BIT" around find_first_zero_bit() >> and find_first_bit() in xen/bitops.h, and according to the link [1], it >> should be wrapped with ifdef. Perhaps it would be better to use "#if >> defined(GENERIC_FIND_FIRST_BIT) && defined(CONFIG_ARM_64)". >> >> My only concern is that it might seem somewhat inconsistent with the >> other find_*_bit() functions added in this patch. Should we be care >> about that? I mean that do we need similar config or it would be enough >> to add a comment why it is necessary to have ifdef >> GENERIC_FIND_FIRST_BIT. > > Note that I didn't ask to keep GENERIC_FIND_FIRST_BIT. I actually > pointed out that it can be removed but it should be explained in the > commit message. +1 And, Oleksii, this isn't the first time that it is being pointed out to you that commit messages need to contain enough information to justify changes made. Jan
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |