[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH v8 02/17] xen: introduce generic non-atomic test_*bit()
On 03.05.2024 19:15, Oleksii wrote: > On Thu, 2024-04-25 at 17:35 +0200, Jan Beulich wrote: >>> #include <asm/bitops.h> >>> >>> +#ifndef arch_check_bitop_size >>> +#define arch_check_bitop_size(addr) >> >> Can this really do nothing? Passing the address of an object smaller >> than >> bitop_uint_t will read past the object in the generic__*_bit() >> functions. > It seems RISC-V isn' happy with the following generic definition: > extern void __bitop_bad_size(void); > > /* --------------------- Please tidy above here -------------------- > - */ > > #include <asm/bitops.h> > > #ifndef arch_check_bitop_size > > #define bitop_bad_size(addr) sizeof(*(addr)) < sizeof(bitop_uint_t) > > #define arch_check_bitop_size(addr) \ > if ( bitop_bad_size(addr) ) __bitop_bad_size(); > > #endif /* arch_check_bitop_size */ I'm afraid you've re-discovered something that was also found during the original Arm porting effort. As nice and logical as it would (seem to) be to have bitop_uint_t match machine word size, there are places ... > The following errors occurs. bitop_uint_t for RISC-V is defined as > unsigned long for now: ... where we assume such operations can be done on 32-bit quantities. Jan > ./common/symbols-dummy.o -o ./.xen-syms.0 > riscv64-linux-gnu-ld: prelink.o: in function `atomic_sub': > /build/xen/./arch/riscv/include/asm/atomic.h:152: undefined reference > to `__bitop_bad_size' > riscv64-linux-gnu-ld: prelink.o: in function `evtchn_check_pollers': > /build/xen/common/event_channel.c:1531: undefined reference to > `__bitop_bad_size' > riscv64-linux-gnu-ld: /build/xen/common/event_channel.c:1521: undefined > reference to `__bitop_bad_size' > riscv64-linux-gnu-ld: prelink.o: in function `evtchn_init': > /build/xen/common/event_channel.c:1541: undefined reference to > `__bitop_bad_size' > riscv64-linux-gnu-ld: prelink.o: in function `_read_lock': > /build/xen/./include/xen/rwlock.h:94: undefined reference to > `__bitop_bad_size' > riscv64-linux-gnu-ld: > prelink.o:/build/xen/./arch/riscv/include/asm/atomic.h:195: more > undefined references to `__bitop_bad_size' follow > riscv64-linux-gnu-ld: ./.xen-syms.0: hidden symbol `__bitop_bad_size' > isn't defined > riscv64-linux-gnu-ld: final link failed: bad value > make[2]: *** [arch/riscv/Makefile:15: xen-syms] Error 1 > > ~ Oleksii
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |