On Mon, Jul 28, 2025 at 07:58:13PM +0100, Pavel Begunkov wrote:...>>
On 7/28/25 19:46, Pavel Begunkov wrote:
On 7/28/25 18:44, Mina Almasry wrote:
On Sun, Jul 27, 2025 at 9:21 PM Byungchul Park <byungchul@xxxxxx> wrote:
info to the compiler to optimise it out without assumptions on
the layouts nor NET_IOV_ASSERT_OFFSET. Currently it's not so bad,
but we should be able to remove this test+cmove.
movq %rdi, %rax # netmem, tmp105
andq $-2, %rax #, tmp105
testb $1, %dil #, netmem
cmove %rdi, %rax # tmp105,, netmem, <retval>
jmp __x86_return_thunk
struct netmem_desc *netmem_to_nmdesc(netmem_ref netmem)
{
void *p = (void *)((__force unsigned long)netmem & ~NET_IOV);
if (netmem_is_net_iov(netmem))
return &((struct net_iov *)p)->desc;
return __pp_page_to_nmdesc((struct page *)p);
}
I wanted to remove constraints that can be removed, but Mina want not to
add additional overhead more. So I'm thinking to keep the constraint,
'netmem_desc is the first member of net_iov'.
Thoughts?