Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 163737
b: refs/heads/master
c: 7bd867d
h: refs/heads/master
i:
  163735: 57ca148
v: v3
  • Loading branch information
Feng Tang authored and Thomas Gleixner committed Sep 16, 2009
1 parent 4c056dc commit 93b5e7b
Show file tree
Hide file tree
Showing 13 changed files with 22 additions and 84 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 54e2603f1a85b9725aa13518d69148b6e7061aa9
refs/heads/master: 7bd867dfb4e0357e06a3211ab2bd0e714110def3
10 changes: 0 additions & 10 deletions trunk/arch/x86/include/asm/paravirt.h
Original file line number Diff line number Diff line change
Expand Up @@ -24,16 +24,6 @@ static inline void load_sp0(struct tss_struct *tss,
PVOP_VCALL2(pv_cpu_ops.load_sp0, tss, thread);
}

static inline unsigned long get_wallclock(void)
{
return PVOP_CALL0(unsigned long, pv_time_ops.get_wallclock);
}

static inline int set_wallclock(unsigned long nowtime)
{
return PVOP_CALL1(int, pv_time_ops.set_wallclock, nowtime);
}

/* The paravirtualized CPUID instruction. */
static inline void __cpuid(unsigned int *eax, unsigned int *ebx,
unsigned int *ecx, unsigned int *edx)
Expand Down
4 changes: 0 additions & 4 deletions trunk/arch/x86/include/asm/paravirt_types.h
Original file line number Diff line number Diff line change
Expand Up @@ -88,10 +88,6 @@ struct pv_lazy_ops {
};

struct pv_time_ops {
/* Set and set time of day */
unsigned long (*get_wallclock)(void);
int (*set_wallclock)(unsigned long);

unsigned long long (*sched_clock)(void);
unsigned long (*get_tsc_khz)(void);
};
Expand Down
50 changes: 0 additions & 50 deletions trunk/arch/x86/include/asm/time.h
Original file line number Diff line number Diff line change
Expand Up @@ -4,57 +4,7 @@
extern void hpet_time_init(void);

#include <asm/mc146818rtc.h>
#ifdef CONFIG_X86_32
#include <linux/efi.h>

static inline unsigned long native_get_wallclock(void)
{
unsigned long retval;

if (efi_enabled)
retval = efi_get_time();
else
retval = mach_get_cmos_time();

return retval;
}

static inline int native_set_wallclock(unsigned long nowtime)
{
int retval;

if (efi_enabled)
retval = efi_set_rtc_mmss(nowtime);
else
retval = mach_set_rtc_mmss(nowtime);

return retval;
}

#else
extern void native_time_init_hook(void);

static inline unsigned long native_get_wallclock(void)
{
return mach_get_cmos_time();
}

static inline int native_set_wallclock(unsigned long nowtime)
{
return mach_set_rtc_mmss(nowtime);
}

#endif

extern void time_init(void);

#ifdef CONFIG_PARAVIRT
#include <asm/paravirt.h>
#else /* !CONFIG_PARAVIRT */

#define get_wallclock() native_get_wallclock()
#define set_wallclock(x) native_set_wallclock(x)

#endif /* CONFIG_PARAVIRT */

#endif /* _ASM_X86_TIME_H */
4 changes: 4 additions & 0 deletions trunk/arch/x86/include/asm/x86_init.h
Original file line number Diff line number Diff line change
Expand Up @@ -114,9 +114,13 @@ struct x86_cpuinit_ops {
/**
* struct x86_platform_ops - platform specific runtime functions
* @calibrate_tsc: calibrate TSC
* @get_wallclock: get time from HW clock like RTC etc.
* @set_wallclock: set time back to HW clock
*/
struct x86_platform_ops {
unsigned long (*calibrate_tsc)(void);
unsigned long (*get_wallclock)(void);
int (*set_wallclock)(unsigned long nowtime);
};

extern struct x86_init_ops x86_init;
Expand Down
4 changes: 4 additions & 0 deletions trunk/arch/x86/kernel/efi.c
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,7 @@
#include <asm/time.h>
#include <asm/cacheflush.h>
#include <asm/tlbflush.h>
#include <asm/x86_init.h>

#define EFI_DEBUG 1
#define PFX "EFI: "
Expand Down Expand Up @@ -453,6 +454,9 @@ void __init efi_init(void)
if (add_efi_memmap)
do_add_efi_memmap();

x86_platform.get_wallclock = efi_get_time;
x86_platform.set_wallclock = efi_set_rtc_mmss;

/* Setup for EFI runtime service */
reboot_type = BOOT_EFI;

Expand Down
4 changes: 2 additions & 2 deletions trunk/arch/x86/kernel/kvmclock.c
Original file line number Diff line number Diff line change
Expand Up @@ -184,10 +184,10 @@ void __init kvmclock_init(void)
if (kvmclock && kvm_para_has_feature(KVM_FEATURE_CLOCKSOURCE)) {
if (kvm_register_clock("boot clock"))
return;
pv_time_ops.get_wallclock = kvm_get_wallclock;
pv_time_ops.set_wallclock = kvm_set_wallclock;
pv_time_ops.sched_clock = kvm_clock_read;
x86_platform.calibrate_tsc = kvm_get_tsc_khz;
x86_platform.get_wallclock = kvm_get_wallclock;
x86_platform.set_wallclock = kvm_set_wallclock;
#ifdef CONFIG_X86_LOCAL_APIC
x86_cpuinit.setup_percpu_clockev =
kvm_setup_secondary_clock;
Expand Down
2 changes: 0 additions & 2 deletions trunk/arch/x86/kernel/paravirt.c
Original file line number Diff line number Diff line change
Expand Up @@ -306,8 +306,6 @@ struct pv_init_ops pv_init_ops = {
};

struct pv_time_ops pv_time_ops = {
.get_wallclock = native_get_wallclock,
.set_wallclock = native_set_wallclock,
.sched_clock = native_sched_clock,
};

Expand Down
12 changes: 4 additions & 8 deletions trunk/arch/x86/kernel/rtc.c
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
#include <linux/pnp.h>

#include <asm/vsyscall.h>
#include <asm/x86_init.h>
#include <asm/time.h>

#ifdef CONFIG_X86_32
Expand Down Expand Up @@ -165,13 +166,13 @@ void rtc_cmos_write(unsigned char val, unsigned char addr)
}
EXPORT_SYMBOL(rtc_cmos_write);

static int set_rtc_mmss(unsigned long nowtime)
int update_persistent_clock(struct timespec now)
{
unsigned long flags;
int retval;

spin_lock_irqsave(&rtc_lock, flags);
retval = set_wallclock(nowtime);
retval = x86_platform.set_wallclock(now.tv_sec);
spin_unlock_irqrestore(&rtc_lock, flags);

return retval;
Expand All @@ -183,17 +184,12 @@ unsigned long read_persistent_clock(void)
unsigned long retval, flags;

spin_lock_irqsave(&rtc_lock, flags);
retval = get_wallclock();
retval = x86_platform.get_wallclock();
spin_unlock_irqrestore(&rtc_lock, flags);

return retval;
}

int update_persistent_clock(struct timespec now)
{
return set_rtc_mmss(now.tv_sec);
}

unsigned long long native_read_tsc(void)
{
return __native_read_tsc();
Expand Down
4 changes: 2 additions & 2 deletions trunk/arch/x86/kernel/vmi_32.c
Original file line number Diff line number Diff line change
Expand Up @@ -818,14 +818,14 @@ static inline int __init activate_vmi(void)
vmi_timer_ops.cancel_alarm =
vmi_get_function(VMI_CALL_CancelAlarm);
x86_init.timers.timer_init = vmi_time_init;
pv_time_ops.get_wallclock = vmi_get_wallclock;
pv_time_ops.set_wallclock = vmi_set_wallclock;
#ifdef CONFIG_X86_LOCAL_APIC
x86_init.timers.setup_percpu_clockev = vmi_time_bsp_init;
x86_cpuinit.setup_percpu_clockev = vmi_time_ap_init;
#endif
pv_time_ops.sched_clock = vmi_sched_clock;
x86_platform.calibrate_tsc = vmi_tsc_khz;
x86_platform.get_wallclock = vmi_get_wallclock;
x86_platform.set_wallclock = vmi_set_wallclock;

/* We have true wallclock functions; disable CMOS clock sync */
no_sync_cmos_clock = 1;
Expand Down
2 changes: 2 additions & 0 deletions trunk/arch/x86/kernel/x86_init.c
Original file line number Diff line number Diff line change
Expand Up @@ -70,4 +70,6 @@ struct x86_cpuinit_ops x86_cpuinit __cpuinitdata = {

struct x86_platform_ops x86_platform = {
.calibrate_tsc = native_calibrate_tsc,
.get_wallclock = mach_get_cmos_time,
.set_wallclock = mach_set_rtc_mmss,
};
4 changes: 1 addition & 3 deletions trunk/arch/x86/lguest/boot.c
Original file line number Diff line number Diff line change
Expand Up @@ -1318,13 +1318,11 @@ __init void lguest_init(void)
set_lguest_basic_apic_ops();
#endif

/* Time operations */
pv_time_ops.get_wallclock = lguest_get_wallclock;

x86_init.resources.memory_setup = lguest_memory_setup;
x86_init.irqs.intr_init = lguest_init_IRQ;
x86_init.timers.timer_init = lguest_time_init;
x86_platform.calibrate_tsc = lguest_tsc_khz;
x86_platform.get_wallclock = lguest_get_wallclock;

/*
* Now is a good time to look at the implementations of these functions
Expand Down
4 changes: 2 additions & 2 deletions trunk/arch/x86/xen/enlighten.c
Original file line number Diff line number Diff line change
Expand Up @@ -842,8 +842,6 @@ static const struct pv_init_ops xen_init_ops __initdata = {
};

static const struct pv_time_ops xen_time_ops __initdata = {
.set_wallclock = xen_set_wallclock,
.get_wallclock = xen_get_wallclock,
.sched_clock = xen_sched_clock,
};

Expand Down Expand Up @@ -980,6 +978,8 @@ asmlinkage void __init xen_start_kernel(void)
x86_cpuinit.setup_percpu_clockev = x86_init_noop;

x86_platform.calibrate_tsc = xen_tsc_khz;
x86_platform.get_wallclock = xen_get_wallclock;
x86_platform.set_wallclock = xen_set_wallclock;

#ifdef CONFIG_X86_64
/*
Expand Down

0 comments on commit 93b5e7b

Please sign in to comment.