From: Jeremy Fitzhardinge <jeremy@goop.org>
To: Suresh Siddha <suresh.b.siddha@intel.com>
Cc: mingo@elte.hu, x86@kernel.org, akpm@linux-foundation.org,
linux-kernel@vger.kernel.org
Subject: Re: [patch 2/3] x2apic: xen64 paravirt basic apic ops
Date: Fri, 11 Jul 2008 14:44:52 -0700 [thread overview]
Message-ID: <4877D454.1080504@goop.org> (raw)
In-Reply-To: <20080711201442.910680000@linux-os.sc.intel.com>
Suresh Siddha wrote:
> Define the Xen specific basic apic ops, in additon to paravirt apic ops,
> with some misc warning fixes.
>
This looks fine to me, other than apic_ops is 64-bit only. What's the
unification plan?
J
> Signed-off-by: Suresh Siddha <suresh.b.siddha@intel.com>
> Cc: Jeremy Fitzhardinge <jeremy@goop.org>
> ---
>
> Index: tree-x86/arch/x86/xen/enlighten.c
> ===================================================================
> --- tree-x86.orig/arch/x86/xen/enlighten.c 2008-07-11 11:26:17.000000000 -0700
> +++ tree-x86/arch/x86/xen/enlighten.c 2008-07-11 11:55:58.000000000 -0700
> @@ -576,16 +576,45 @@
> }
>
> #ifdef CONFIG_X86_LOCAL_APIC
> -static u32 xen_apic_read(unsigned long reg)
> +static u32 xen_apic_read(u32 reg)
> {
> return 0;
> }
>
> -static void xen_apic_write(unsigned long reg, u32 val)
> +static void xen_apic_write(u32 reg, u32 val)
> {
> /* Warn to see if there's any stray references */
> WARN_ON(1);
> }
> +
> +#ifdef CONFIG_X86_64
> +static u64 xen_apic_icr_read(void)
> +{
> + return 0;
> +}
> +
> +static void xen_apic_icr_write(u32 low, u32 id)
> +{
> + /* Warn to see if there's any stray references */
> + WARN_ON(1);
> +}
> +
> +static void xen_apic_wait_icr_idle(void)
> +{
> + return;
> +}
> +
> +static struct apic_ops xen_basic_apic_ops = {
> + .read = xen_apic_read,
> + .write = xen_apic_write,
> + .write_atomic = xen_apic_write,
> + .icr_read = xen_apic_icr_read,
> + .icr_write = xen_apic_icr_write,
> + .wait_icr_idle = xen_apic_wait_icr_idle,
> + .safe_wait_icr_idle = xen_apic_wait_icr_idle,
> +};
> +#endif
> +
> #endif
>
> static void xen_flush_tlb(void)
> @@ -1269,9 +1298,11 @@
>
> static const struct pv_apic_ops xen_apic_ops __initdata = {
> #ifdef CONFIG_X86_LOCAL_APIC
> +#ifndef CONFIG_X86_64
> .apic_write = xen_apic_write,
> .apic_write_atomic = xen_apic_write,
> .apic_read = xen_apic_read,
> +#endif
> .setup_boot_clock = paravirt_nop,
> .setup_secondary_clock = paravirt_nop,
> .startup_ipi_hook = paravirt_nop,
> @@ -1673,6 +1704,12 @@
> pv_irq_ops = xen_irq_ops;
> pv_apic_ops = xen_apic_ops;
> pv_mmu_ops = xen_mmu_ops;
> +#ifdef CONFIG_X86_64
> + /*
> + * for 64bit, set up the basic apic ops aswell.
> + */
> + apic_ops = &xen_basic_apic_ops;
> +#endif
>
> if (xen_feature(XENFEAT_mmu_pt_update_preserve_ad)) {
> pv_mmu_ops.ptep_modify_prot_start = xen_ptep_modify_prot_start;
> Index: tree-x86/include/asm-x86/paravirt.h
> ===================================================================
> --- tree-x86.orig/include/asm-x86/paravirt.h 2008-07-11 10:58:31.000000000 -0700
> +++ tree-x86/include/asm-x86/paravirt.h 2008-07-11 12:00:12.000000000 -0700
> @@ -200,13 +200,15 @@
>
> struct pv_apic_ops {
> #ifdef CONFIG_X86_LOCAL_APIC
> +#ifndef CONFIG_X86_64
> /*
> * Direct APIC operations, principally for VMI. Ideally
> * these shouldn't be in this interface.
> */
> - void (*apic_write)(unsigned long reg, u32 v);
> - void (*apic_write_atomic)(unsigned long reg, u32 v);
> - u32 (*apic_read)(unsigned long reg);
> + void (*apic_write)(u32 reg, u32 v);
> + void (*apic_write_atomic)(u32 reg, u32 v);
> + u32 (*apic_read)(u32 reg);
> +#endif
> void (*setup_boot_clock)(void);
> void (*setup_secondary_clock)(void);
>
> @@ -903,17 +905,17 @@
> * Basic functions accessing APICs.
> */
> #ifndef CONFIG_X86_64
> -static inline void apic_write(unsigned long reg, u32 v)
> +static inline void apic_write(u32 reg, u32 v)
> {
> PVOP_VCALL2(pv_apic_ops.apic_write, reg, v);
> }
>
> -static inline void apic_write_atomic(unsigned long reg, u32 v)
> +static inline void apic_write_atomic(u32 reg, u32 v)
> {
> PVOP_VCALL2(pv_apic_ops.apic_write_atomic, reg, v);
> }
>
> -static inline u32 apic_read(unsigned long reg)
> +static inline u32 apic_read(u32 reg)
> {
> return PVOP_CALL1(unsigned long, pv_apic_ops.apic_read, reg);
> }
> Index: tree-x86/arch/x86/lguest/boot.c
> ===================================================================
> --- tree-x86.orig/arch/x86/lguest/boot.c 2008-07-11 10:36:24.000000000 -0700
> +++ tree-x86/arch/x86/lguest/boot.c 2008-07-11 12:01:51.000000000 -0700
> @@ -783,11 +783,11 @@
> * code qualifies for Advanced. It will also never interrupt anything. It
> * does, however, allow us to get through the Linux boot code. */
> #ifdef CONFIG_X86_LOCAL_APIC
> -static void lguest_apic_write(unsigned long reg, u32 v)
> +static void lguest_apic_write(u32 reg, u32 v)
> {
> }
>
> -static u32 lguest_apic_read(unsigned long reg)
> +static u32 lguest_apic_read(u32 reg)
> {
> return 0;
> }
>
>
next prev parent reply other threads:[~2008-07-11 21:45 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-07-11 20:11 [patch 1/3] x2apic: uninline uv_init_apic_ldr() Suresh Siddha
2008-07-11 20:11 ` [patch 2/3] x2apic: xen64 paravirt basic apic ops Suresh Siddha
2008-07-11 21:44 ` Jeremy Fitzhardinge [this message]
2008-07-11 20:11 ` [patch 3/3] x2apic: kernel-parameter documentation for "x2apic_phys" Suresh Siddha
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4877D454.1080504@goop.org \
--to=jeremy@goop.org \
--cc=akpm@linux-foundation.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@elte.hu \
--cc=suresh.b.siddha@intel.com \
--cc=x86@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.