On 07/06/2016 15:16, Minfei Huang wrote: > ping. Any comment is appreciate.
The patch looks good, I'll follow up with another to introduce the seqcount-like read_begin/read_retry API. Thanks, Paolo > On 05/28/16 at 08:27P, Minfei Huang wrote: >> There is a generic function __pvclock_read_cycles to be used to get both >> flags and cycles. For function pvclock_read_flags, it's useless to get >> cycles value. To make this function be more effective, get this variable >> flags directly in function. >> >> Signed-off-by: Minfei Huang <[email protected]> >> --- >> v1: >> - Get rid of __pvclock_read_cycles according to Andy's suggestion >> --- >> arch/x86/kernel/pvclock.c | 7 +++++-- >> 1 file changed, 5 insertions(+), 2 deletions(-) >> >> diff --git a/arch/x86/kernel/pvclock.c b/arch/x86/kernel/pvclock.c >> index 7f82fe0..06c58ce 100644 >> --- a/arch/x86/kernel/pvclock.c >> +++ b/arch/x86/kernel/pvclock.c >> @@ -61,11 +61,14 @@ void pvclock_resume(void) >> u8 pvclock_read_flags(struct pvclock_vcpu_time_info *src) >> { >> unsigned version; >> - cycle_t ret; >> u8 flags; >> >> do { >> - version = __pvclock_read_cycles(src, &ret, &flags); >> + version = src->version; >> + /* Make the latest version visible */ >> + smp_rmb(); >> + >> + flags = src->flags; >> /* Make sure that the version double-check is last. */ >> smp_rmb(); >> } while ((src->version & 1) || version != src->version); >> -- >> 2.6.3 >> >

