5ebc77de83c7b74543de774afa7395b3b790e65e |
|
11-Sep-2014 |
Stefano Stabellini <stefano.stabellini@eu.citrix.com> |
xen/arm: introduce XENFEAT_grant_map_identity The flag tells us that the hypervisor maps a grant page to guest physical address == machine address of the page in addition to the normal grant mapping address. It is needed to properly issue cache maintenance operation at the completion of a DMA operation involving a foreign grant. Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com> Tested-by: Denis Schneider <v1ne2go@gmail.com>
|
a91c7775e3469821711c1eadf15149b3ba2c82c9 |
|
25-Jul-2014 |
Himangi Saraogi <himangi774@gmail.com> |
xen/arm: use BUG_ON Use BUG_ON(x) rather than if(x) BUG(); The semantic patch that fixes this problem is as follows: // <smpl> @@ identifier x; @@ -if (x) BUG(); +BUG_ON(x); // </smpl> Signed-off-by: Himangi Saraogi <himangi774@gmail.com> Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com> Acked-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
|
79390289cfeb6d0f4295ca32a54630c93154428e |
|
08-May-2014 |
Stefano Stabellini <stefano.stabellini@eu.citrix.com> |
arm,arm64/xen: introduce HYPERVISOR_suspend() Introduce HYPERVISOR_suspend() and a few additional empty stubs for Xen arch specific functions called by drivers/xen/manage.c. Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com> Signed-off-by: David Vrabel <david.vrabel@citrix.com>
|
9f1d341415b9d84fcf0cb04f409bd61fac5e2f14 |
|
09-May-2014 |
Ian Campbell <ian.campbell@citrix.com> |
arm: xen: export HYPERVISOR_multicall to modules. "arm: xen: implement multicall hypercall support." forgot to do this. Signed-off-by: Ian Campbell <ian.campbell@citrix.com> Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
|
47c542050d306e50f09512eb6339dbf2fc02fddd |
|
30-Jan-2014 |
Julien Grall <julien.grall@linaro.org> |
xen/gnttab: Use phys_addr_t to describe the grant frame base address On ARM, address size can be 32 bits or 64 bits (if CONFIG_ARCH_PHYS_ADDR_T_64BIT is enabled). We can't assume that the grant frame base address will always fits in an unsigned long. Use phys_addr_t instead of unsigned long as argument for gnttab_setup_auto_xlat_frames. Signed-off-by: Julien Grall <julien.grall@linaro.org> Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com> Acked-by: Ian Campbell <ian.campbell@citrix.com> Reviewed-by: David Vrabel <david.vrabel@citrix.com>
|
8b271d57b57585a3e3e8cd7abc5f4d7710a0e62d |
|
30-Jan-2014 |
Julien Grall <julien.grall@linaro.org> |
arm/xen: Initialize event channels earlier Event channels driver needs to be initialized very early. Until now, Xen initialization was done after all CPUs was bring up. We can safely move the initialization to an early initcall. Also use a cpu notifier to: - Register the VCPU when the CPU is prepared - Enable event channel IRQ when the CPU is running Signed-off-by: Julien Grall <julien.grall@linaro.org> Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
|
efaf30a3357872cf0fc7d555b1f9968ec71535d3 |
|
06-Jan-2014 |
Konrad Rzeszutek Wilk <konrad.wilk@oracle.com> |
xen/grant: Implement an grant frame array struct (v3). The 'xen_hvm_resume_frames' used to be an 'unsigned long' and contain the virtual address of the grants. That was OK for most architectures (PVHVM, ARM) were the grants are contiguous in memory. That however is not the case for PVH - in which case we will have to do a lookup for each virtual address for the PFN. Instead of doing that, lets make it a structure which will contain the array of PFNs, the virtual address and the count of said PFNs. Also provide a generic functions: gnttab_setup_auto_xlat_frames and gnttab_free_auto_xlat_frames to populate said structure with appropriate values for PVHVM and ARM. To round it off, change the name from 'xen_hvm_resume_frames' to a more descriptive one - 'xen_auto_xlat_grant_frames'. For PVH, in patch "xen/pvh: Piggyback on PVHVM for grant driver" we will populate the 'xen_auto_xlat_grant_frames' by ourselves. v2 moves the xen_remap in the gnttab_setup_auto_xlat_frames and also introduces xen_unmap for gnttab_free_auto_xlat_frames. Suggested-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com> Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com> [v3: Based on top of 'asm/xen/page.h: remove redundant semicolon'] Acked-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
|
a7892f32cc3534d4cc0e64b245fbf47a8e364652 |
|
11-Dec-2013 |
Ian Campbell <ian.campbell@citrix.com> |
arm: xen: foreign mapping PTEs are special. These mappings are in fact special and require special handling in privcmd, which already exists. Failure to mark the PTE as special on arm64 causes all sorts of bad PTE fun. e.g. e.g.: BUG: Bad page map in process xl pte:e0004077b33f53 pmd:4079575003 page:ffffffbce1a2f328 count:1 mapcount:-1 mapping: (null) index:0x0 page flags: 0x4000000000000014(referenced|dirty) addr:0000007fb5259000 vm_flags:040644fa anon_vma: (null) mapping:ffffffc03a6fda58 index:0 vma->vm_ops->fault: privcmd_fault+0x0/0x38 vma->vm_file->f_op->mmap: privcmd_mmap+0x0/0x2c CPU: 0 PID: 2657 Comm: xl Not tainted 3.12.0+ #102 Call trace: [<ffffffc0000880f8>] dump_backtrace+0x0/0x12c [<ffffffc000088238>] show_stack+0x14/0x1c [<ffffffc0004b67e0>] dump_stack+0x70/0x90 [<ffffffc000125690>] print_bad_pte+0x12c/0x1bc [<ffffffc0001268f4>] unmap_single_vma+0x4cc/0x700 [<ffffffc0001273b4>] unmap_vmas+0x68/0xb4 [<ffffffc00012c050>] unmap_region+0xcc/0x1d4 [<ffffffc00012df20>] do_munmap+0x218/0x314 [<ffffffc00012e060>] vm_munmap+0x44/0x64 [<ffffffc00012ed78>] SyS_munmap+0x24/0x34 Where unmap_single_vma contains inlined -> unmap_page_range -> zap_pud_range -> zap_pmd_range -> zap_pte_range -> print_bad_pte. Or: BUG: Bad page state in process xl pfn:4077b4d page:ffffffbce1a2f8d8 count:0 mapcount:-1 mapping: (null) index:0x0 page flags: 0x4000000000000014(referenced|dirty) Modules linked in: CPU: 0 PID: 2657 Comm: xl Tainted: G B 3.12.0+ #102 Call trace: [<ffffffc0000880f8>] dump_backtrace+0x0/0x12c [<ffffffc000088238>] show_stack+0x14/0x1c [<ffffffc0004b67e0>] dump_stack+0x70/0x90 [<ffffffc00010f798>] bad_page+0xc4/0x110 [<ffffffc00010f8b4>] free_pages_prepare+0xd0/0xd8 [<ffffffc000110e94>] free_hot_cold_page+0x28/0x178 [<ffffffc000111460>] free_hot_cold_page_list+0x38/0x60 [<ffffffc000114cf0>] release_pages+0x190/0x1dc [<ffffffc00012c0e0>] unmap_region+0x15c/0x1d4 [<ffffffc00012df20>] do_munmap+0x218/0x314 [<ffffffc00012e060>] vm_munmap+0x44/0x64 [<ffffffc00012ed78>] SyS_munmap+0x24/0x34 x86 already gets this correct. 32-bit arm gets away with this because there is not PTE_SPECIAL bit in the PTE there and the vm_normal_page fallback path does the right thing. Signed-off-by: Ian Campbell <ian.campbell@citrix.com> Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
|
c94cae53f9e564484f906a79be5639fc66e8cb02 |
|
04-Dec-2013 |
Eric Trudeau <etrudeau@broadcom.com> |
XEN: Grant table address, xen_hvm_resume_frames, is a phys_addr not a pfn From: Eric Trudeau <etrudeau@broadcom.com> xen_hvm_resume_frames stores the physical address of the grant table. englighten.c was incorrectly setting it as if it was a page frame number. This caused the table to be mapped into the guest at an unexpected physical address. Additionally, a warning is improved to include the grant table address which failed in xen_remap. Signed-off-by: Eric Trudeau <etrudeau@broadcom.com> Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
|
e1a9c16b303725ac900fee2a3ec4dbe2c2f846ab |
|
09-Sep-2013 |
Julien Grall <julien.grall@linaro.org> |
xen/arm: disable cpuidle and cpufreq when linux is running as dom0 When linux is running as dom0, Xen doesn't show the physical cpu but a virtual CPU. On some ARM SOC (for instance the exynos 5250), linux registers callbacks for cpuidle and cpufreq. When these callbacks are called, they will modify directly the physical cpu not the virtual one. It can impact the whole board instead of only dom0. Signed-off-by: Julien Grall <julien.grall@linaro.org> Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com> Reviewed-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
|
9dd4b2944c46e1fdbd0a516c221c8a2670cbf005 |
|
29-Aug-2013 |
Rob Herring <rob.herring@calxeda.com> |
ARM: xen: only set pm function ptrs for Xen guests xen_pm_init was unconditionally setting pm_power_off and arm_pm_restart function pointers. This breaks multi-platform kernels. Make this conditional on running as a Xen guest and make it a late_initcall to ensure it is setup after platform code for Dom0. Signed-off-by: Rob Herring <rob.herring@calxeda.com> Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com> CC: stable@vger.kernel.org
|
0d7febe58413884f6428143221971618fbf3a47d |
|
29-Jul-2013 |
Julien Grall <julien.grall@linaro.org> |
xen/arm: missing put_cpu in xen_percpu_init When CONFIG_PREEMPT is enabled, Linux will not be able to boot and warn: [ 4.127825] ------------[ cut here ]------------ [ 4.133376] WARNING: at init/main.c:699 do_one_initcall+0x150/0x158() [ 4.140738] initcall xen_init_events+0x0/0x10c returned with preemption imbalance This is because xen_percpu_init uses get_cpu but doesn't have the corresponding put_cpu. Signed-off-by: Julien Grall <julien.grall@linaro.org> Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
|
2451ade070ef9b0a0f118ac41896da856e72b5a1 |
|
21-Jul-2013 |
Stefano Stabellini <stefano.stabellini@eu.citrix.com> |
xen/arm,arm64: update xen_restart after ff701306cd49 and 7b6d864b48d9 Commit 7b6d864b48d9 (reboot: arm: change reboot_mode to use enum reboot_mode) and ff701306cd49 (arm64: use common reboot infrastructure) change the prototype of arm_pm_restart on arm and arm64. Update xen_restart accordingly. Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
|
176455e9a9e2a37a0b3eec6f6d7883de720c02c7 |
|
02-Jul-2013 |
Stefano Stabellini <stefano.stabellini@eu.citrix.com> |
xen/arm and xen/arm64: implement HYPERVISOR_tmem_op Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
|
3cc8e40e8ff8e232a9dd672da81beabd09f87366 |
|
08-May-2013 |
Stefano Stabellini <stefano.stabellini@eu.citrix.com> |
xen/arm: rename xen_secondary_init and run it on every online cpu Rename xen_secondary_init to xen_percpu_init. Run xen_percpu_init on the each online cpu, reuse the current on_each_cpu call. Merge xen_percpu_enable_events into xen_percpu_init. Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
|
d7266d7894b111dee9b081c05944533bc8780eca |
|
08-May-2013 |
Stefano Stabellini <stefano.stabellini@eu.citrix.com> |
xen/arm: do not handle VCPUOP_register_vcpu_info failures We expect VCPUOP_register_vcpu_info to succeed, do not try to handle failures. Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com> Acked-by: Ian Campbell <ian.campbell@citrix.com>
|
1aa3d8d9935dfb459d64f06ccd828b56147fd971 |
|
08-May-2013 |
Stefano Stabellini <stefano.stabellini@eu.citrix.com> |
xen/arm: initialize pm functions later If we are running in dom0, we have to wait for the arch specific code to complete the initialization in order for us to successfully reset the power_off and pm_restart functions. Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
|
9bc25a1d5f95f97e9e378620a46e954d3f842641 |
|
27-Apr-2013 |
Wei Yongjun <yongjun_wei@trendmicro.com.cn> |
xen/arm: remove duplicated include from enlighten.c Remove duplicated include. Signed-off-by: Wei Yongjun <yongjun_wei@trendmicro.com.cn>
|
6abb749e83cf100bc4c71537e4c4e97ccdadcafe |
|
25-Apr-2013 |
Stefano Stabellini <stefano.stabellini@eu.citrix.com> |
xen/arm: use sched_op hypercalls for machine reboot and power off Changes in v5: - set pm_power_off and arm_pm_restart from the Xen specific intialization code. Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
|
9a9ab3cc00dc0c338e3ab96f75a0e1a3c1aa3c27 |
|
25-Apr-2013 |
Stefano Stabellini <stefano.stabellini@eu.citrix.com> |
xen/arm: SMP support Map vcpu_info using VCPUOP_register_vcpu_info on all the online vcpus, make sure the allocated struct doesn't cross a page boundary. Call enable_percpu_irq on every cpu. Changes in v5: - allocate xen_vcpu_info dynamically, aligning it to the size of the struct; - use VCPUOP_register_vcpu_info on cpu0 too. Changed in v2: - move the percpu variable argument fix to a separate patch; - remove unused variable. Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
|
ea0af61321347d7742714d3ebf30df418e6482e2 |
|
25-Apr-2013 |
Stefano Stabellini <stefano.stabellini@eu.citrix.com> |
xen/arm: implement HYPERVISOR_vcpu_op Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com> Reviewed-by: Ian Campbell <ian.campbell@citrix.com>
|
2798ba7d19aed645663398a21ec4006bfdbb1ef3 |
|
25-Apr-2013 |
Stefano Stabellini <stefano.stabellini@eu.citrix.com> |
xen/arm: actually pass a non-NULL percpu pointer to request_percpu_irq Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com> Reviewed-by: Ian Campbell <ian.camjpbell@citrix.com> CC: stable@vger.kernel.org
|
07d0c943663f82d9682856c0a7db7145a6c911d6 |
|
20-Feb-2013 |
Ian Campbell <ian.campbell@citrix.com> |
xen: implement updated XENMEM_add_to_physmap_range ABI Allows for more fine grained error reporting. Only used by PVH and ARM both of which are marked EXPERIMENTAL precisely because the ABI is not yet stable Signed-off-by: Ian Campbell <ian.campbell@citrix.com> [v1: Rebased without PVH patches] Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
|
f832da068b0aadb15f747f6427b6bf945f525ba4 |
|
03-Oct-2012 |
Ian Campbell <ian.campbell@citrix.com> |
xen: arm: implement remap interfaces needed for privcmd mappings. We use XENMEM_add_to_physmap_range which is the preferred interface for foreign mappings. Acked-by: Mukesh Rathor <mukesh.rathor@oracle.com> Acked-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com> Signed-off-by: Ian Campbell <ian.campbell@citrix.com> Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
|
c61ba7291b81ed7fd8c1dba1b45d05cae3f150f7 |
|
03-Oct-2012 |
Ian Campbell <ian.campbell@citrix.com> |
xen: arm: enable balloon driver The code is now in a state where can just enable it. Drop the *_xenballloned_pages duplicates since these are now supplied by the balloon code. Signed-off-by: Ian Campbell <ian.campbell@citrix.com> Acked-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com> Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
|
ab277bbf662ef17ffb7fd8dd7a462a34e326e492 |
|
08-Nov-2012 |
Stefano Stabellini <stefano.stabellini@eu.citrix.com> |
xen/arm: Fix compile errors when drivers are compiled as modules (export more). The commit 911dec0db4de6ccc544178a8ddaf9cec0a11d533 "xen/arm: Fix compile errors when drivers are compiled as modules." exports the neccessary functions. But to guard ourselves against out-of-tree modules and future drivers hitting this, lets export all of the relevant hypercalls. Acked-by: Arnd Bergmann <arnd@arndb.de> Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com> Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
|
911dec0db4de6ccc544178a8ddaf9cec0a11d533 |
|
06-Nov-2012 |
Konrad Rzeszutek Wilk <konrad.wilk@oracle.com> |
xen/arm: Fix compile errors when drivers are compiled as modules. We end up with: ERROR: "HYPERVISOR_event_channel_op" [drivers/xen/xen-gntdev.ko] undefined! ERROR: "privcmd_call" [drivers/xen/xen-privcmd.ko] undefined! ERROR: "HYPERVISOR_grant_table_op" [drivers/net/xen-netback/xen-netback.ko] undefined! and this patch exports said function (which is implemented in hypercall.S). Acked-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com> Acked-by: Ian Campbell <ian.campbell@citrix.com> Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
|
ea54209b16cbecad8928f6067af29069ac44e360 |
|
08-Aug-2012 |
Stefano Stabellini <stefano.stabellini@eu.citrix.com> |
xen/arm: implement alloc/free_xenballooned_pages with alloc_pages/kfree Only until we get the balloon driver to work. Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com> Acked-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
|
0ec53ecf38bcbf95b4b057328a8fbba4d22ef28b |
|
14-Sep-2012 |
Stefano Stabellini <stefano.stabellini@eu.citrix.com> |
xen/arm: receive Xen events on ARM Compile events.c on ARM. Parse, map and enable the IRQ to get event notifications from the device tree (node "/xen"). Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com> Acked-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
|
b3b52fd87e8f7544fde75a471108bd5bd4492c90 |
|
13-Sep-2012 |
Stefano Stabellini <stefano.stabellini@eu.citrix.com> |
xen/arm: initialize grant_table on ARM Initialize the grant table mapping at the address specified at index 0 in the DT under the /xen node. After the grant table is initialized, call xenbus_probe (if not dom0). Changes in v2: - introduce GRANT_TABLE_PHYSADDR; - remove unneeded initialization of boot_max_nr_grant_frames. Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
|
ef61ee0dc7ba0409dc0e8122de90d4e48d4c8669 |
|
08-Aug-2012 |
Stefano Stabellini <stefano.stabellini@eu.citrix.com> |
xen/arm: get privilege status Use Xen features to figure out if we are privileged. XENFEAT_dom0 was introduced by 23735 in xen-unstable.hg. Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com> Acked-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
|
2e01f16601d8924b12b1acf1cdc49a0d1cc1cfb2 |
|
14-Sep-2012 |
Stefano Stabellini <stefano.stabellini@eu.citrix.com> |
xen/arm: Xen detection and shared_info page mapping Check for a node in the device tree compatible with "xen,xen", if it is present set xen_domain_type to XEN_HVM_DOMAIN and continue initialization. Map the real shared info page using XENMEM_add_to_physmap with XENMAPSPACE_shared_info. Changes in v4: - simpler parsing of Xen version in the compatible DT node. Changes in v3: - use the "xen,xen" notation rather than "arm,xen"; - add an additional check on the presence of the Xen version. Changes in v2: - replace pr_info with pr_debug. Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
|
4c071ee5268f7234c3d084b6093bebccc28cdcba |
|
14-Sep-2012 |
Stefano Stabellini <stefano.stabellini@eu.citrix.com> |
arm: initial Xen support - Basic hypervisor.h and interface.h definitions. - Skeleton enlighten.c, set xen_start_info to an empty struct. - Make xen_initial_domain dependent on the SIF_PRIVILIGED_BIT. The new code only compiles when CONFIG_XEN is set, that is going to be added to arch/arm/Kconfig in patch #11 "xen/arm: introduce CONFIG_XEN on ARM". Changes in v3: - improve comments. Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com> Acked-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
|