[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] [PATCH] xen/arm: io: add function swap_mmio_handler()




On 6/12/19 17:08, Julien Grall wrote:
Hi,

On 6/12/19 6:42 AM, Baodong Chen wrote:
Swap function can be used when calling sort().
or else, the default swap function generic_swap() is used,
which is a little inefficient.

I am not entirely convince this will be more efficient. mmio_handler does not fit in 64 bit, so the compiler may decide to do either multiple load or replace with a memcpy.

Hello Julien,

I have checked the disassemble result,

and IIUC generic_swap has a loop so it should be a little inefficient. I'm not expert about hardware, please correct me if i'm wrong.

000000000022ee88 <generic_swap>:
  22ee88:       d2800003        mov     x3, #0x0                        // #0
  22ee8c:       d503201f        nop
  22ee90:       38636825        ldrb    w5, [x1, x3]
  22ee94:       38636804        ldrb    w4, [x0, x3]
  22ee98:       38236805        strb    w5, [x0, x3]
  22ee9c:       38236824        strb    w4, [x1, x3]
  22eea0:       91000463        add     x3, x3, #0x1
  22eea4:       4b030044        sub     w4, w2, w3
  22eea8:       7100009f        cmp     w4, #0x0
  22eeac:       54ffff2c        b.gt    22ee90 <generic_swap+0x8>
  22eeb0:       d65f03c0        ret
  22eeb4:       d503201f        nop


0000000000242db8 <swap_mmio_handler>:
  242db8:       a9400c22        ldp     x2, x3, [x1]
  242dbc:       d10083ff        sub     sp, sp, #0x20
  242dc0:       a9401404        ldp     x4, x5, [x0]
  242dc4:       a9000c02        stp     x2, x3, [x0]
  242dc8:       a9410c02        ldp     x2, x3, [x0, #16]
  242dcc:       a9411c26        ldp     x6, x7, [x1, #16]
  242dd0:       a9011c06        stp     x6, x7, [x0, #16]
  242dd4:       a9001424        stp     x4, x5, [x1]
  242dd8:       a9010c22        stp     x2, x3, [x1, #16]
  242ddc:       910083ff        add     sp, sp, #0x20
  242de0:       d65f03c0        ret
  242de4:       d503201f        nop


So at best this feels some micro-optimization. But then, this is only call a limited number of time at each domain build. Is it really worth it?

It's not hot path here.

Not sure about worth.

Personally  i will try my best to do things well according to my understanding.


On a side note, I have noticed you are sending a lot of optimization/clean-up patch. What is your end goal here?

My goal is to understand how xen works well.


If it is to improve the performance, then there are much bigger fish to fry within Xen code base. I am happy to point some of them based on where you are looking to improve.

Surly i want to improve performance.

Features like Fast Startup ( I learned from xen summit 2018, samsung automotive presentation).

But currently i don't understand xen well, only a few weeks experience.

I'm afraid can't catch big fish.


Cheers,


_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/mailman/listinfo/xen-devel

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.