# HG changeset patch # User Doi.Tsunehisa@jp.fujitsu.com # Node ID bfc60efbd4f491f9c3ff494f655b4ab825f65d2c # Parent a0a48f19ddba0ebab21befb076eba607b8221700 Modify unmodified_drivers code for PV-on-HVM on IPF Signed-off-by: Tsunehisa Doi Signed-off-by: Tomonari Horikoshi diff -r a0a48f19ddba -r bfc60efbd4f4 unmodified_drivers/linux-2.6/platform-pci/platform-pci.c --- a/unmodified_drivers/linux-2.6/platform-pci/platform-pci.c Sat Aug 26 13:44:41 2006 +0900 +++ b/unmodified_drivers/linux-2.6/platform-pci/platform-pci.c Sat Aug 26 13:50:25 2006 +0900 @@ -54,11 +54,15 @@ static int __init init_xen_info(void) static int __init init_xen_info(void) { unsigned long shared_info_frame; + extern void *shared_info_area; +#ifndef __ia64__ struct xen_add_to_physmap xatp; - extern void *shared_info_area; - +#else + struct xen_hvm_setup xhs; +#endif setup_xen_features(); +#ifndef __ia64__ shared_info_frame = alloc_xen_mmio(PAGE_SIZE) >> PAGE_SHIFT; xatp.domid = DOMID_SELF; xatp.idx = 0; @@ -66,9 +70,17 @@ static int __init init_xen_info(void) xatp.gpfn = shared_info_frame; if (HYPERVISOR_memory_op(XENMEM_add_to_physmap, &xatp)) BUG(); - shared_info_area = ioremap(shared_info_frame << PAGE_SHIFT, PAGE_SIZE); +#else /* !__ia64__ */ + shared_info_frame = __get_free_page(GFP_KERNEL); + xhs.arg1 = virt_to_phys((void *)shared_info_frame); + xhs.arg2 = 0; + if (HYPERVISOR_hvm_op(HVMOP_setup_shared_info_page, &xhs)) + BUG(); + shared_info_area = (shared_info_t *)shared_info_frame; +#endif /* !__ia64__ */ + if (shared_info_area == NULL) panic("can't map shared info\n"); @@ -96,6 +108,7 @@ static void __devexit platform_pci_remov free_irq(pdev->irq, pdev); } +#ifndef __ia64__ static unsigned long platform_mmio; static unsigned long platform_mmio_alloc; static unsigned long platform_mmiolen; @@ -160,6 +173,7 @@ static int get_hypercall_stubs(void) return 0; } +#endif /* !__ia64__ */ static int __devinit platform_pci_init(struct pci_dev *pdev, const struct pci_device_id *ent) @@ -198,13 +212,14 @@ static int __devinit platform_pci_init(s return -EBUSY; } +#ifndef __ia64__ platform_mmio = mmio_addr; platform_mmiolen = mmio_len; ret = get_hypercall_stubs(); if (ret < 0) goto out; - +#endif /* __ia64__ */ if ((ret = init_xen_info())) goto out; diff -r a0a48f19ddba -r bfc60efbd4f4 unmodified_drivers/linux-2.6/platform-pci/xen_support.c --- a/unmodified_drivers/linux-2.6/platform-pci/xen_support.c Sat Aug 26 13:44:41 2006 +0900 +++ b/unmodified_drivers/linux-2.6/platform-pci/xen_support.c Sat Aug 26 13:50:25 2006 +0900 @@ -26,11 +26,13 @@ #include #include "platform-pci.h" +#ifndef __ia64__ void xen_machphys_update(unsigned long mfn, unsigned long pfn) { BUG(); } EXPORT_SYMBOL(xen_machphys_update); +#endif /* __ia64__ */ void balloon_update_driver_allowance(long delta) { @@ -41,3 +43,15 @@ void balloon_release_driver_page(struct { } EXPORT_SYMBOL(balloon_release_driver_page); + +#ifdef __ia64__ +int running_on_xen=1; +EXPORT_SYMBOL(running_on_xen); + +int ia64_xenmem_reservation_op( + unsigned long op, struct xen_memory_reservation* reservation__) +{ + return 0; +} +EXPORT_SYMBOL(ia64_xenmem_reservation_op); +#endif /* __ia64__ */