1. 04 1月, 2013 1 次提交
    • G
      Drivers: xen: remove __dev* attributes. · 345a5255
      Greg Kroah-Hartman 提交于
      CONFIG_HOTPLUG is going away as an option.  As a result, the __dev*
      markings need to be removed.
      
      This change removes the use of __devinit, and __devinitdata from these
      drivers.
      
      Based on patches originally written by Bill Pemberton, but redone by me
      in order to handle some of the coding style issues better, by hand.
      
      Cc: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
      Cc: Jeremy Fitzhardinge <jeremy@goop.org>
      Cc: Jan Beulich <jbeulich@suse.com>
      Cc: Stephen Hemminger <shemminger@vyatta.com>
      Cc: Jesse Barnes <jbarnes@virtuousgeek.org>
      Cc: Bill Pemberton <wfp5p@virginia.edu>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      345a5255
  2. 29 11月, 2012 6 次提交
  3. 27 11月, 2012 1 次提交
    • L
      xen/acpi: ACPI PAD driver · 92e3229d
      Liu, Jinsong 提交于
      PAD is acpi Processor Aggregator Device which provides a control point
      that enables the platform to perform specific processor configuration
      and control that applies to all processors in the platform.
      
      This patch is to implement Xen acpi pad logic. When running under Xen
      virt platform, native pad driver would not work. Instead Xen pad driver,
      a self-contained and thin logic level, would take over acpi pad logic.
      
      When acpi pad notify OSPM, xen pad logic intercept and parse _PUR object
      to get the expected idle cpu number, and then hypercall to hypervisor.
      Xen hypervisor would then do the rest work, say, core parking, to idle
      specific number of cpus on its own policy.
      Signed-off-by: NJan Beulich <JBeulich@suse.com>
      Signed-off-by: NLiu Jinsong <jinsong.liu@intel.com>
      Signed-off-by: NKonrad Rzeszutek Wilk <konrad.wilk@oracle.com>
      92e3229d
  4. 21 11月, 2012 1 次提交
  5. 19 11月, 2012 1 次提交
  6. 16 11月, 2012 1 次提交
  7. 07 11月, 2012 2 次提交
    • K
      xen/generic: Disable fallback build on ARM. · 6bf926dd
      Konrad Rzeszutek Wilk 提交于
      As there is no need for it (the fallback code is for older
      hypervisors and they only run under x86), and also b/c
      we get:
      
      drivers/xen/fallback.c: In function 'xen_event_channel_op_compat':
      drivers/xen/fallback.c:10:19: error: storage size of 'op' isn't known
      drivers/xen/fallback.c:15:2: error: implicit declaration of function '_hypercall1' [-Werror=implicit-function-declaration]
      drivers/xen/fallback.c:15:19: error: expected expression before 'int'
      drivers/xen/fallback.c:18:7: error: 'EVTCHNOP_close' undeclared (first use in this function)
      drivers/xen/fallback.c:18:7: note: each undeclared identifier is reported only once for each function it appears in
      .. and more
      
      [v1: Moved the enablement to be covered by CONFIG_X86 per Ian's suggestion]
      Signed-off-by: NKonrad Rzeszutek Wilk <konrad.wilk@oracle.com>
      6bf926dd
    • M
      xen/events: fix RCU warning, or Call idle notifier after irq_enter() · 772aebce
      Mojiong Qiu 提交于
      exit_idle() should be called after irq_enter(), otherwise it throws:
      
      [ INFO: suspicious RCU usage. ]
      3.6.5 #1 Not tainted
      -------------------------------
      include/linux/rcupdate.h:725 rcu_read_lock() used illegally while idle!
      
      other info that might help us debug this:
      
      RCU used illegally from idle CPU!
      rcu_scheduler_active = 1, debug_locks = 1
      RCU used illegally from extended quiescent state!
      1 lock held by swapper/0/0:
       #0:  (rcu_read_lock){......}, at: [<ffffffff810e9fe0>] __atomic_notifier_call_chain+0x0/0x140
      
      stack backtrace:
      Pid: 0, comm: swapper/0 Not tainted 3.6.5 #1
      Call Trace:
       <IRQ>  [<ffffffff811259a2>] lockdep_rcu_suspicious+0xe2/0x130
       [<ffffffff810ea10c>] __atomic_notifier_call_chain+0x12c/0x140
       [<ffffffff810e9fe0>] ? atomic_notifier_chain_unregister+0x90/0x90
       [<ffffffff811216cd>] ? trace_hardirqs_off+0xd/0x10
       [<ffffffff810ea136>] atomic_notifier_call_chain+0x16/0x20
       [<ffffffff810777c3>] exit_idle+0x43/0x50
       [<ffffffff81568865>] xen_evtchn_do_upcall+0x25/0x50
       [<ffffffff81aa690e>] xen_do_hypervisor_callback+0x1e/0x30
       <EOI>  [<ffffffff810013aa>] ? hypercall_page+0x3aa/0x1000
       [<ffffffff810013aa>] ? hypercall_page+0x3aa/0x1000
       [<ffffffff81061540>] ? xen_safe_halt+0x10/0x20
       [<ffffffff81075cfa>] ? default_idle+0xba/0x570
       [<ffffffff810778af>] ? cpu_idle+0xdf/0x140
       [<ffffffff81a4d881>] ? rest_init+0x135/0x144
       [<ffffffff81a4d74c>] ? csum_partial_copy_generic+0x16c/0x16c
       [<ffffffff82520c45>] ? start_kernel+0x3db/0x3e8
       [<ffffffff8252066a>] ? repair_env_string+0x5a/0x5a
       [<ffffffff82520356>] ? x86_64_start_reservations+0x131/0x135
       [<ffffffff82524aca>] ? xen_start_kernel+0x465/0x46
      
      Git commit 98ad1cc1
      Author: Frederic Weisbecker <fweisbec@gmail.com>
      Date:   Fri Oct 7 18:22:09 2011 +0200
      
          x86: Call idle notifier after irq_enter()
      
      did this, but it missed the Xen code.
      Signed-off-by: NMojiong Qiu <mjqiu@tencent.com>
      Cc: stable@vger.kernel.org # from 3.3 and newer.
      Signed-off-by: NKonrad Rzeszutek Wilk <konrad.wilk@oracle.com>
      772aebce
  8. 04 11月, 2012 1 次提交
    • J
      xen/hypercall: fix hypercall fallback code for very old hypervisors · cf47a83f
      Jan Beulich 提交于
      While copying the argument structures in HYPERVISOR_event_channel_op()
      and HYPERVISOR_physdev_op() into the local variable is sufficiently
      safe even if the actual structure is smaller than the container one,
      copying back eventual output values the same way isn't: This may
      collide with on-stack variables (particularly "rc") which may change
      between the first and second memcpy() (i.e. the second memcpy() could
      discard that change).
      
      Move the fallback code into out-of-line functions, and handle all of
      the operations known by this old a hypervisor individually: Some don't
      require copying back anything at all, and for the rest use the
      individual argument structures' sizes rather than the container's.
      Reported-by: NDan Carpenter <dan.carpenter@oracle.com>
      Signed-off-by: NJan Beulich <jbeulich@suse.com>
      [v2: Reduce #define/#undef usage in HYPERVISOR_physdev_op_compat().]
      [v3: Fix compile errors when modules use said hypercalls]
      [v4: Add xen_ prefix to the HYPERCALL_..]
      [v5: Alter the name and only EXPORT_SYMBOL_GPL one of them]
      Signed-off-by: NKonrad Rzeszutek Wilk <konrad.wilk@oracle.com>
      cf47a83f
  9. 02 11月, 2012 2 次提交
    • J
      xen-pciback: reject out of range inputs · b3e40b72
      Jan Beulich 提交于
      This add checks for out of range numbers (including in cases where the
      folding of slot and function into a single value could yield false
      matches).
      
      It also removes the bogus field width restrictions in str_to_quirk() -
      nowhere else in the driver this is being done, and hence this function
      could reject input the equivalent of which would be happily accepted
      in other places (in particular, "0x" prefixes causing the effective
      width of the actual number to be either zero or less than what would be
      required to cover the full range of valid values). Note that for the
      moment this second part is cosmetic only, as the kernel's sscanf()
      currently ignores the field widths, but a patch to overcome this is on
      its way.
      Signed-off-by: NJan Beulich <jbeulich@suse.com>
      Signed-off-by: NKonrad Rzeszutek Wilk <konrad.wilk@oracle.com>
      b3e40b72
    • J
      xen-pciback: simplify and tighten parsing of device IDs · 5b71fbdc
      Jan Beulich 提交于
      Now that at least one of the conformance problems of the kernel's
      sscanf() was addressed (commit da99075c),
      we can improve the parsing done in xen-pciback both in terms of code
      readability and correctness (in particular properly rejecting input
      strings not well formed).
      Signed-off-by: NJan Beulich <jbeulich@suse.com>
      Signed-off-by: NKonrad Rzeszutek Wilk <konrad.wilk@oracle.com>
      5b71fbdc
  10. 30 10月, 2012 5 次提交
  11. 20 10月, 2012 11 次提交
  12. 12 10月, 2012 1 次提交
    • K
      xen/pv-on-hvm kexec: add quirk for Xen 3.4 and shutdown watches. · cb6b6df1
      Konrad Rzeszutek Wilk 提交于
      The commit 254d1a3f, titled
      "xen/pv-on-hvm kexec: shutdown watches from old kernel" assumes that the
      XenBus backend can deal with reading of values from:
       "control/platform-feature-xs_reset_watches":
      
          ... a patch for xenstored is required so that it
          accepts the XS_RESET_WATCHES request from a client (see changeset
          23839:42a45baf037d in xen-unstable.hg). Without the patch for xenstored
          the registration of watches will fail and some features of a PVonHVM
          guest are not available. The guest is still able to boot, but repeated
          kexec boots will fail."
      
      Sadly this is not true when using a Xen 3.4 hypervisor and booting a PVHVM
      guest. We end up hanging at:
      
        err = xenbus_scanf(XBT_NIL, "control",
                              "platform-feature-xs_reset_watches", "%d", &supported);
      
      This can easily be seen with guests hanging at xenbus_init:
      
      NX (Execute Disable) protection: active
      SMBIOS 2.4 present.
      DMI: Xen HVM domU, BIOS 3.4.0 05/13/2011
      Hypervisor detected: Xen HVM
      Xen version 3.4.
      Xen Platform PCI: I/O protocol version 1
      ... snip ..
      calling  xenbus_init+0x0/0x27e @ 1
      
      Reverting the commit or using the attached patch fixes the issue. This fix
      checks whether the hypervisor is older than 4.0 and if so does not try to
      perform the read.
      
      Fixes-Oracle-Bug: 14708233
      CC: stable@vger.kernel.org
      Acked-by: NOlaf Hering <olaf@aepfle.de>
      [v2: Added a comment in the source code]
      Signed-off-by: NKonrad Rzeszutek Wilk <konrad.wilk@oracle.com>
      cb6b6df1
  13. 10 10月, 2012 1 次提交
    • A
      ARM: Xen: fix initial build problems · f880b67d
      Arnd Bergmann 提交于
      * The XEN_BALLOON code requires the balloon infrastructure that is not
        getting built on ARM.
      
      * The tmem hypercall is not available on ARM
      
      * ARMv6 does not support cmpxchg on 16-bit words that are used in the
        Xen grant table code, so we must ensure that Xen support is only
        built on ARMv7-only kernels not combined ARMv6/v7 kernels.
      
      * sys-hypervisor.c needs to include linux/err.h in order to use the
        IS_ERR/PTR_ERR/ERR_PTR family of functions.
      Signed-off-by: NArnd Bergmann <arnd@arndb.de>
      Acked-by: NIan Campbell <ian.campbell@citrix.com>
      Cc: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
      Cc: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
      Cc: Jeremy Fitzhardinge <jeremy@goop.org>
      Cc: xen-devel@lists.xensource.com
      f880b67d
  14. 09 10月, 2012 1 次提交
    • K
      mm: kill vma flag VM_RESERVED and mm->reserved_vm counter · 314e51b9
      Konstantin Khlebnikov 提交于
      A long time ago, in v2.4, VM_RESERVED kept swapout process off VMA,
      currently it lost original meaning but still has some effects:
      
       | effect                 | alternative flags
      -+------------------------+---------------------------------------------
      1| account as reserved_vm | VM_IO
      2| skip in core dump      | VM_IO, VM_DONTDUMP
      3| do not merge or expand | VM_IO, VM_DONTEXPAND, VM_HUGETLB, VM_PFNMAP
      4| do not mlock           | VM_IO, VM_DONTEXPAND, VM_HUGETLB, VM_PFNMAP
      
      This patch removes reserved_vm counter from mm_struct.  Seems like nobody
      cares about it, it does not exported into userspace directly, it only
      reduces total_vm showed in proc.
      
      Thus VM_RESERVED can be replaced with VM_IO or pair VM_DONTEXPAND | VM_DONTDUMP.
      
      remap_pfn_range() and io_remap_pfn_range() set VM_IO|VM_DONTEXPAND|VM_DONTDUMP.
      remap_vmalloc_range() set VM_DONTEXPAND | VM_DONTDUMP.
      
      [akpm@linux-foundation.org: drivers/vfio/pci/vfio_pci.c fixup]
      Signed-off-by: NKonstantin Khlebnikov <khlebnikov@openvz.org>
      Cc: Alexander Viro <viro@zeniv.linux.org.uk>
      Cc: Carsten Otte <cotte@de.ibm.com>
      Cc: Chris Metcalf <cmetcalf@tilera.com>
      Cc: Cyrill Gorcunov <gorcunov@openvz.org>
      Cc: Eric Paris <eparis@redhat.com>
      Cc: H. Peter Anvin <hpa@zytor.com>
      Cc: Hugh Dickins <hughd@google.com>
      Cc: Ingo Molnar <mingo@redhat.com>
      Cc: James Morris <james.l.morris@oracle.com>
      Cc: Jason Baron <jbaron@redhat.com>
      Cc: Kentaro Takeda <takedakn@nttdata.co.jp>
      Cc: Matt Helsley <matthltc@us.ibm.com>
      Cc: Nick Piggin <npiggin@kernel.dk>
      Cc: Oleg Nesterov <oleg@redhat.com>
      Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
      Cc: Robert Richter <robert.richter@amd.com>
      Cc: Suresh Siddha <suresh.b.siddha@intel.com>
      Cc: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
      Cc: Venkatesh Pallipadi <venki@google.com>
      Acked-by: NLinus Torvalds <torvalds@linux-foundation.org>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      314e51b9
  15. 03 10月, 2012 2 次提交
  16. 26 9月, 2012 1 次提交
    • K
      xen/pciback: Restore the PCI config space after an FLR. · c341ca45
      Konrad Rzeszutek Wilk 提交于
      When we do an FLR, or D0->D3_hot we may lose the BARs as the
      device has turned itself off (and on). This means the device cannot
      function unless the pci_restore_state is called - which it is
      when the PCI device is unbound from the Xen PCI backend driver.
      For PV guests it ends up calling pci_enable_device / pci_enable_msi[x]
      which does the proper steps
      
      That however is not happening if a HVM guest is run as QEMU
      deals with PCI configuration space. QEMU also requires that the
      device be "parked"  under the ownership of a pci-stub driver to
      guarantee that the PCI device is not being used. Hence we
      follow the same incantation as pci_reset_function does - by
      doing an FLR, then restoring the PCI configuration space.
      
      The result of this patch is that when you run lspci, you get
      now this:
      
      -       Region 0: [virtual] Memory at fe8c0000 (32-bit, non-prefetchable) [size=128K]
      -       Region 1: [virtual] Memory at fe800000 (32-bit, non-prefetchable) [size=512K]
      +       Region 0: Memory at fe8c0000 (32-bit, non-prefetchable) [size=128K]
      +       Region 1: Memory at fe800000 (32-bit, non-prefetchable) [size=512K]
              Region 2: I/O ports at c000 [size=32]
      -       Region 3: [virtual] Memory at fe8e0000 (32-bit, non-prefetchable) [size=16K]
      +       Region 3: Memory at fe8e0000 (32-bit, non-prefetchable) [size=16K]
      
      The [virtual] means that lspci read those entries from SysFS but when
      it read them from the device it got a different value (0xfffffff).
      
      CC: stable@vger.kernel.org #only for 3.5, 3.6
      Signed-off-by: NKonrad Rzeszutek Wilk <konrad.wilk@oracle.com>
      c341ca45
  17. 25 9月, 2012 1 次提交
  18. 21 9月, 2012 1 次提交
    • A
      xen/gndev: Xen backend support for paged out grant targets V4. · c571898f
      Andres Lagar-Cavilla 提交于
      Since Xen-4.2, hvm domains may have portions of their memory paged out. When a
      foreign domain (such as dom0) attempts to map these frames, the map will
      initially fail. The hypervisor returns a suitable errno, and kicks an
      asynchronous page-in operation carried out by a helper. The foreign domain is
      expected to retry the mapping operation until it eventually succeeds. The
      foreign domain is not put to sleep because itself could be the one running the
      pager assist (typical scenario for dom0).
      
      This patch adds support for this mechanism for backend drivers using grant
      mapping and copying operations. Specifically, this covers the blkback and
      gntdev drivers (which map foreign grants), and the netback driver (which copies
      foreign grants).
      
      * Add a retry method for grants that fail with GNTST_eagain (i.e. because the
        target foreign frame is paged out).
      * Insert hooks with appropriate wrappers in the aforementioned drivers.
      
      The retry loop is only invoked if the grant operation status is GNTST_eagain.
      It guarantees to leave a new status code different from GNTST_eagain. Any other
      status code results in identical code execution as before.
      
      The retry loop performs 256 attempts with increasing time intervals through a
      32 second period. It uses msleep to yield while waiting for the next retry.
      
      V2 after feedback from David Vrabel:
      * Explicit MAX_DELAY instead of wrap-around delay into zero
      * Abstract GNTST_eagain check into core grant table code for netback module.
      
      V3 after feedback from Ian Campbell:
      * Add placeholder in array of grant table error descriptions for unrelated
        error code we jump over.
      * Eliminate single map and retry macro in favor of a generic batch flavor.
      * Some renaming.
      * Bury most implementation in grant_table.c, cleaner interface.
      
      V4 rebased on top of sync of Xen grant table interface headers.
      Signed-off-by: NAndres Lagar-Cavilla <andres@lagarcavilla.org>
      Acked-by: NIan Campbell <ian.campbell@citrix.com>
      [v5: Fixed whitespace issues]
      Signed-off-by: NKonrad Rzeszutek Wilk <konrad.wilk@oracle.com>
      c571898f