Skip to content

Commit

Permalink
xen/x86: Implement x86_apic_ops
Browse files Browse the repository at this point in the history
Or rather just implement one different function as opposed
to the native one : the read function.

We synthesize the values.

Acked-by:  Suresh Siddha <[email protected]>
[v1: Rebased on top of tip/x86/urgent]
[v2: Return 0xfd instead of 0xff in the default case]
Signed-off-by: Konrad Rzeszutek Wilk <[email protected]>
  • Loading branch information
konradwilk committed May 1, 2012
1 parent 4a8e2a3 commit 31b3c9d
Show file tree
Hide file tree
Showing 4 changed files with 24 additions and 1 deletion.
2 changes: 1 addition & 1 deletion arch/x86/xen/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -20,5 +20,5 @@ obj-$(CONFIG_EVENT_TRACING) += trace.o
obj-$(CONFIG_SMP) += smp.o
obj-$(CONFIG_PARAVIRT_SPINLOCKS)+= spinlock.o
obj-$(CONFIG_XEN_DEBUG_FS) += debugfs.o
obj-$(CONFIG_XEN_DOM0) += vga.o
obj-$(CONFIG_XEN_DOM0) += apic.o vga.o
obj-$(CONFIG_SWIOTLB_XEN) += pci-swiotlb-xen.o
17 changes: 17 additions & 0 deletions arch/x86/xen/apic.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
#include <linux/init.h>
#include <asm/x86_init.h>

unsigned int xen_io_apic_read(unsigned apic, unsigned reg)
{
if (reg == 0x1)
return 0x00170020;
else if (reg == 0x0)
return apic << 24;

return 0xfd;
}

void __init xen_init_apic(void)
{
x86_io_apic_ops.read = xen_io_apic_read;
}
2 changes: 2 additions & 0 deletions arch/x86/xen/enlighten.c
Original file line number Diff line number Diff line change
Expand Up @@ -1362,6 +1362,8 @@ asmlinkage void __init xen_start_kernel(void)
xen_start_info->console.domU.mfn = 0;
xen_start_info->console.domU.evtchn = 0;

xen_init_apic();

/* Make sure ACS will be enabled */
pci_request_acs();
}
Expand Down
4 changes: 4 additions & 0 deletions arch/x86/xen/xen-ops.h
Original file line number Diff line number Diff line change
Expand Up @@ -92,11 +92,15 @@ struct dom0_vga_console_info;

#ifdef CONFIG_XEN_DOM0
void __init xen_init_vga(const struct dom0_vga_console_info *, size_t size);
void __init xen_init_apic(void);
#else
static inline void __init xen_init_vga(const struct dom0_vga_console_info *info,
size_t size)
{
}
static inline void __init xen_init_apic(void)
{
}
#endif

/* Declare an asm function, along with symbols needed to make it
Expand Down

0 comments on commit 31b3c9d

Please sign in to comment.