1. 08 5月, 2012 1 次提交
  2. 27 4月, 2012 2 次提交
  3. 20 4月, 2012 2 次提交
    • K
      xen/resume: Fix compile warnings. · 186bab1c
      Konrad Rzeszutek Wilk 提交于
      linux/drivers/xen/manage.c: In function 'do_suspend':
      linux/drivers/xen/manage.c:160:5: warning: 'si.cancelled' may be used uninitialized in this function
      Signed-off-by: NKonrad Rzeszutek Wilk <konrad.wilk@oracle.com>
      186bab1c
    • K
      xen/xenbus: Add quirk to deal with misconfigured backends. · 3066616c
      Konrad Rzeszutek Wilk 提交于
      A rather annoying and common case is when booting a PVonHVM guest
      and exposing the PV KBD and PV VFB - as broken toolstacks don't
      always initialize the backends correctly.
      
      Normally The HVM guest is using the VGA driver and the emulated
      keyboard for this (though upstream version of QEMU implements
      PV KBD, but still uses a VGA driver). We provide a very basic
      two-stage wait mechanism - where we wait for 30 seconds for all
      devices, and then for 270 for all them except the two mentioned.
      
      That allows us to wait for the essential devices, like network
      or disk for the full 6 minutes.
      
      To trigger this, put this in your guest config:
      
      vfb = [ 'vnc=1, vnclisten=0.0.0.0 ,vncunused=1']
      
      instead of this:
      vnc=1
      vnclisten="0.0.0.0"
      
      CC: stable@kernel.org
      Acked-by: NStefano Stabellini <stefano.stabellini@eu.citrix.com>
      [v3: Split delay in non-essential (30 seconds) and essential
       devices per Ian and Stefano suggestion]
      [v4: Added comments per Stefano suggestion]
      Signed-off-by: NKonrad Rzeszutek Wilk <konrad.wilk@oracle.com>
      3066616c
  4. 18 4月, 2012 1 次提交
  5. 17 4月, 2012 1 次提交
  6. 07 4月, 2012 1 次提交
    • J
      xen/pciback: fix XEN_PCI_OP_enable_msix result · 0ee46eca
      Jan Beulich 提交于
      Prior to 2.6.19 and as of 2.6.31, pci_enable_msix() can return a
      positive value to indicate the number of vectors (less than the amount
      requested) that can be set up for a given device. Returning this as an
      operation value (secondary result) is fine, but (primary) operation
      results are expected to be negative (error) or zero (success) according
      to the protocol. With the frontend fixed to match the XenoLinux
      behavior, the backend can now validly return zero (success) here,
      passing the upper limit on the number of vectors in op->value.
      Signed-off-by: NJan Beulich <jbeulich@suse.com>
      Signed-off-by: NKonrad Rzeszutek Wilk <konrad.wilk@oracle.com>
      0ee46eca
  7. 28 3月, 2012 1 次提交
  8. 24 3月, 2012 1 次提交
    • K
      xen/acpi: Fix Kconfig dependency on CPU_FREQ · df7a3ee2
      Konrad Rzeszutek Wilk 提交于
      The functions: "acpi_processor_*" sound like they depend on CONFIG_ACPI_PROCESSOR
      but in reality they are exposed when CONFIG_CPU_FREQ=[y|m]. As such
      update the Kconfig to have this dependency and fix compile issues:
      
      ERROR: "acpi_processor_unregister_performance" [drivers/xen/xen-acpi-processor.ko] undefined!
      ERROR: "acpi_processor_notify_smm" [drivers/xen/xen-acpi-processor.ko] undefined!
      ERROR: "acpi_processor_register_performance" [drivers/xen/xen-acpi-processor.ko] undefined!
      ERROR: "acpi_processor_preregister_performance" [drivers/xen/xen-acpi-processor.ko] undefined!
      
      Note: We still need the CONFIG_ACPI
      Reported-by: NRandy Dunlap <rdunlap@xenotime.net>
      Signed-off-by: NKonrad Rzeszutek Wilk <konrad.wilk@oracle.com>
      df7a3ee2
  9. 22 3月, 2012 2 次提交
    • I
      xen: initialize platform-pci even if xen_emul_unplug=never · b9136d20
      Igor Mammedov 提交于
      When xen_emul_unplug=never is specified on kernel command line
      reading files from /sys/hypervisor is broken (returns -EBUSY).
      It is caused by xen_bus dependency on platform-pci and
      platform-pci isn't initialized when xen_emul_unplug=never is
      specified.
      
      Fix it by allowing platform-pci to ignore xen_emul_unplug=never,
      and do not intialize xen_[blk|net]front instead.
      Signed-off-by: NIgor Mammedov <imammedo@redhat.com>
      Acked-by: NStefano Stabellini <stefano.stabellini@eu.citrix.com>
      Signed-off-by: NKonrad Rzeszutek Wilk <konrad.wilk@oracle.com>
      b9136d20
    • K
      xen/acpi: Remove the WARN's as they just create noise. · 27257fc0
      Konrad Rzeszutek Wilk 提交于
      When booting the kernel under machines that do not have P-states
      we would end up with:
      
      ------------[ cut here ]------------
       WARNING: at drivers/xen/xen-acpi-processor.c:504
       xen_acpi_processor_init+0x286/0
       x2e0()
       Hardware name: ProLiant BL460c G6
       Modules linked in:
       Pid: 1, comm: swapper Not tainted 2.6.39-200.0.3.el5uek #1
       Call Trace:
        [<ffffffff8191d056>] ? xen_acpi_processor_init+0x286/0x2e0
        [<ffffffff81068300>] warn_slowpath_common+0x90/0xc0
        [<ffffffff8191cdd0>] ? check_acpi_ids+0x1e0/0x1e0
        [<ffffffff8106834a>] warn_slowpath_null+0x1a/0x20
        [<ffffffff8191d056>] xen_acpi_processor_init+0x286/0x2e0
        [<ffffffff8191cdd0>] ? check_acpi_ids+0x1e0/0x1e0
        [<ffffffff81002168>] do_one_initcall+0xe8/0x130
      
      .. snip..
      
      Which is OK - the machines do not have P-states, so we fail to register
      to process the _PXX states. But there is no need to WARN the user
      of it.
      
      Oracle BZ# 13871288
      Signed-off-by: NKonrad Rzeszutek Wilk <konrad.wilk@oracle.com>
      27257fc0
  10. 21 3月, 2012 3 次提交
  11. 15 3月, 2012 2 次提交
    • K
      xen/acpi-processor: C and P-state driver that uploads said data to hypervisor. · 59a56802
      Konrad Rzeszutek Wilk 提交于
      This driver solves three problems:
       1). Parse and upload ACPI0007 (or PROCESSOR_TYPE) information to the
           hypervisor - aka P-states (cpufreq data).
       2). Upload the the Cx state information (cpuidle data).
       3). Inhibit CPU frequency scaling drivers from loading.
      
      The reason for wanting to solve 1) and 2) is such that the Xen hypervisor
      is the only one that knows the CPU usage of different guests and can
      make the proper decision of when to put CPUs and packages in proper states.
      Unfortunately the hypervisor has no support to parse ACPI DSDT tables, hence it
      needs help from the initial domain to provide this information. The reason
      for 3) is that we do not want the initial domain to change P-states while the
      hypervisor is doing it as well - it causes rather some funny cases of P-states
      transitions.
      
      For this to work, the driver parses the Power Management data and uploads said
      information to the Xen hypervisor. It also calls acpi_processor_notify_smm()
      to inhibit the other CPU frequency scaling drivers from being loaded.
      
      Everything revolves around the 'struct acpi_processor' structure which
      gets updated during the bootup cycle in different stages. At the startup, when
      the ACPI parser starts, the C-state information is processed (processor_idle)
      and saved in said structure as 'power' element. Later on, the CPU frequency
      scaling driver (powernow-k8 or acpi_cpufreq), would call the the
      acpi_processor_* (processor_perflib functions) to parse P-states information
      and populate in the said structure the 'performance' element.
      
      Since we do not want the CPU frequency scaling drivers from loading
      we have to call the acpi_processor_* functions to parse the P-states and
      call "acpi_processor_notify_smm" to stop them from loading.
      
      There is also one oddity in this driver which is that under Xen, the
      physical online CPU count can be different from the virtual online CPU count.
      Meaning that the macros 'for_[online|possible]_cpu' would process only
      up to virtual online CPU count. We on the other hand want to process
      the full amount of physical CPUs. For that, the driver checks if the ACPI IDs
      count is different from the APIC ID count - which can happen if the user
      choose to use dom0_max_vcpu argument. In such a case a backup of the PM
      structure is used and uploaded to the hypervisor.
      
      [v1-v2: Initial RFC implementations that were posted]
      [v3: Changed the name to passthru suggested by Pasi Kärkkäinen <pasik@iki.fi>]
      [v4: Added vCPU != pCPU support - aka dom0_max_vcpus support]
      [v5: Cleaned up the driver, fix bug under Athlon XP]
      [v6: Changed the driver to a CPU frequency governor]
      [v7: Jan Beulich <jbeulich@suse.com> suggestion to make it a cpufreq scaling driver
           made me rework it as driver that inhibits cpufreq scaling driver]
      [v8: Per Jan's review comments, fixed up the driver]
      [v9: Allow to continue even if acpi_processor_preregister_perf.. fails]
      Signed-off-by: NKonrad Rzeszutek Wilk <konrad.wilk@oracle.com>
      59a56802
    • J
      xen: constify all instances of "struct attribute_group" · ead1d014
      Jan Beulich 提交于
      The functions these get passed to have been taking pointers to const
      since at least 2.6.16.
      Signed-off-by: NJan Beulich <jbeulich@suse.com>
      Signed-off-by: NKonrad Rzeszutek Wilk <konrad.wilk@oracle.com>
      ead1d014
  12. 14 3月, 2012 2 次提交
  13. 27 2月, 2012 1 次提交
  14. 15 2月, 2012 1 次提交
  15. 04 2月, 2012 3 次提交
  16. 30 1月, 2012 1 次提交
    • R
      PM / Sleep: Introduce "late suspend" and "early resume" of devices · cf579dfb
      Rafael J. Wysocki 提交于
      The current device suspend/resume phases during system-wide power
      transitions appear to be insufficient for some platforms that want
      to use the same callback routines for saving device states and
      related operations during runtime suspend/resume as well as during
      system suspend/resume.  In principle, they could point their
      .suspend_noirq() and .resume_noirq() to the same callback routines
      as their .runtime_suspend() and .runtime_resume(), respectively,
      but at least some of them require device interrupts to be enabled
      while the code in those routines is running.
      
      It also makes sense to have device suspend-resume callbacks that will
      be executed with runtime PM disabled and with device interrupts
      enabled in case someone needs to run some special code in that
      context during system-wide power transitions.
      
      Apart from this, .suspend_noirq() and .resume_noirq() were introduced
      as a workaround for drivers using shared interrupts and failing to
      prevent their interrupt handlers from accessing suspended hardware.
      It appears to be better not to use them for other porposes, or we may
      have to deal with some serious confusion (which seems to be happening
      already).
      
      For the above reasons, introduce new device suspend/resume phases,
      "late suspend" and "early resume" (and analogously for hibernation)
      whose callback will be executed with runtime PM disabled and with
      device interrupts enabled and whose callback pointers generally may
      point to runtime suspend/resume routines.
      Signed-off-by: NRafael J. Wysocki <rjw@sisk.pl>
      Reviewed-by: NMark Brown <broonie@opensource.wolfsonmicro.com>
      Reviewed-by: NKevin Hilman <khilman@ti.com>
      cf579dfb
  17. 28 1月, 2012 1 次提交
    • K
      xen/granttable: Disable grant v2 for HVM domains. · 69e8f430
      Konrad Rzeszutek Wilk 提交于
      As proper scaffolding for supporting error status is not yet
      implemented.
      
      BUG: unable to handle kernel NULL pointer dereference at 0000000000000400
      IP: [<ffffffff81375ae9>] gnttab_end_foreign_access_ref_v2+0x29/0x40
      PGD 32aa3067 PUD 32a87067 PMD 0
      Oops: 0000 [#1] PREEMPT SMP
      CPU 0
      Modules linked in: sg sr_mod cdrom ata_generic ata_piix libata scsi_mod xen_blkfront xen_netfront fb_sys_fops sysimgblt sysfillrect syscopyarea xen_kbdfront
      cmd
      
      Pid: 2307, comm: ip Not tainted 3.3.0-rc1 #1 Xen HVM domU
      RIP: 0010:[<ffffffff81375ae9>]  [<ffffffff81375ae9>] gnttab_end_foreign_access_ref_v2+0x29/0x40
      RSP: 0018:ffff88003be03d38  EFLAGS: 00010206
      RAX: 0000000000000000 RBX: ffff880033210640 RCX: 0000000000000040
      RDX: 0000000000002000 RSI: 0000000000000000 RDI: 0000000000000200
      RBP: ffff88003be03d38 R08: 0000000000000101 R09: 0000000000000000
      R10: dead000000100100 R11: 0000000000000000 R12: ffff88003be03e48
      R13: 0000000000000001 R14: ffff880039461c00 R15: 0000000000000200
      FS:  00007fb1f84ec700(0000) GS:ffff88003be00000(0000) knlGS:0000000000000000
      ...
      Signed-off-by: NKonrad Rzeszutek Wilk <konrad.wilk@oracle.com>
      69e8f430
  18. 24 1月, 2012 1 次提交
    • D
      mm: zcache/tmem/cleancache: s/flush/invalidate/ · 91c6cc9b
      Dan Magenheimer 提交于
      Complete the renaming from "flush" to "invalidate" across
      both tmem frontends (cleancache and frontswap) and both tmem backends
      (Xen and zcache), as required by akpm.
      
      This change is completely cosmetic.
      
      [v10: no change]
      [v9: akpm@linux-foundation.org: change "flush" to "invalidate", part 3]
      Signed-off-by: NDan Magenheimer <dan.magenheimer@oracle.com>
      Cc: Kamezawa Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
      Cc: Jan Beulich <JBeulich@novell.com>
      Acked-by: NSeth Jennings <sjenning@linux.vnet.ibm.com>
      Cc: Jeremy Fitzhardinge <jeremy@goop.org>
      Cc: Hugh Dickins <hughd@google.com>
      Cc: Johannes Weiner <hannes@cmpxchg.org>
      Cc: Nitin Gupta <ngupta@vflare.org>
      Cc: Matthew Wilcox <matthew@wil.cx>
      Cc: Chris Mason <chris.mason@oracle.com>
      Cc: Rik Riel <riel@redhat.com>
      Cc: Andrew Morton <akpm@linux-foundation.org>
      [v11: Remove the frontswap part]
      Signed-off-by: NKonrad Rzeszutek Wilk <konrad.wilk@oracle.com>
      91c6cc9b
  19. 19 1月, 2012 1 次提交
  20. 13 1月, 2012 3 次提交
  21. 09 1月, 2012 1 次提交
  22. 08 1月, 2012 2 次提交
  23. 05 1月, 2012 4 次提交
    • I
      xen/xenbus: don't reimplement kvasprintf via a fixed size buffer · a800651e
      Ian Campbell 提交于
      Signed-off-by: NIan Campbell <ian.campbell@citrix.com>
      Cc: Haogang Chen <haogangchen@gmail.com>
      Acked-by: NJan Beulich <JBeulich@suse.com>
      Signed-off-by: NKonrad Rzeszutek Wilk <konrad.wilk@oracle.com>
      a800651e
    • I
      xenbus: maximum buffer size is XENSTORE_PAYLOAD_MAX · 50bf7379
      Ian Campbell 提交于
      Use this now that it is defined even though it happens to be == PAGE_SIZE.
      
      The code which takes requests from userspace already validates against the size
      of this buffer so no further checks are required to ensure that userspace
      requests comply with the protocol in this respect.
      Signed-off-by: NIan Campbell <ian.campbell@citrix.com>
      Cc: Haogang Chen <haogangchen@gmail.com>
      Signed-off-by: NKonrad Rzeszutek Wilk <konrad.wilk@oracle.com>
      50bf7379
    • I
      xen/xenbus: Reject replies with payload > XENSTORE_PAYLOAD_MAX. · 9e7860ce
      Ian Campbell 提交于
      Haogang Chen found out that:
      
       There is a potential integer overflow in process_msg() that could result
       in cross-domain attack.
      
       	body = kmalloc(msg->hdr.len + 1, GFP_NOIO | __GFP_HIGH);
      
       When a malicious guest passes 0xffffffff in msg->hdr.len, the subsequent
       call to xb_read() would write to a zero-length buffer.
      
       The other end of this connection is always the xenstore backend daemon
       so there is no guest (malicious or otherwise) which can do this. The
       xenstore daemon is a trusted component in the system.
      
       However this seem like a reasonable robustness improvement so we should
       have it.
      
      And Ian when read the API docs found that:
              The payload length (len field of the header) is limited to 4096
              (XENSTORE_PAYLOAD_MAX) in both directions.  If a client exceeds the
              limit, its xenstored connection will be immediately killed by
              xenstored, which is usually catastrophic from the client's point of
              view.  Clients (particularly domains, which cannot just reconnect)
              should avoid this.
      
      so this patch checks against that instead.
      
      This also avoids a potential integer overflow pointed out by Haogang Chen.
      Signed-off-by: NIan Campbell <ian.campbell@citrix.com>
      Cc: Haogang Chen <haogangchen@gmail.com>
      CC: stable@kernel.org
      Signed-off-by: NKonrad Rzeszutek Wilk <konrad.wilk@oracle.com>
      9e7860ce
    • J
      Xen: consolidate and simplify struct xenbus_driver instantiation · 73db144b
      Jan Beulich 提交于
      The 'name', 'owner', and 'mod_name' members are redundant with the
      identically named fields in the 'driver' sub-structure. Rather than
      switching each instance to specify these fields explicitly, introduce
      a macro to simplify this.
      
      Eliminate further redundancy by allowing the drvname argument to
      DEFINE_XENBUS_DRIVER() to be blank (in which case the first entry from
      the ID table will be used for .driver.name).
      
      Also eliminate the questionable xenbus_register_{back,front}end()
      wrappers - their sole remaining purpose was the checking of the
      'owner' field, proper setting of which shouldn't be an issue anymore
      when the macro gets used.
      
      v2: Restore DRV_NAME for the driver name in xen-pciback.
      Signed-off-by: NJan Beulich <jbeulich@suse.com>
      Cc: Jens Axboe <axboe@kernel.dk>
      Cc: Dmitry Torokhov <dmitry.torokhov@gmail.com>
      Cc: Florian Tobias Schandinat <FlorianSchandinat@gmx.de>
      Cc: Ian Campbell <ian.campbell@citrix.com>
      Cc: David S. Miller <davem@davemloft.net>
      Signed-off-by: NKonrad Rzeszutek Wilk <konrad.wilk@oracle.com>
      73db144b
  24. 04 1月, 2012 1 次提交
    • J
      xen-gntalloc: introduce missing kfree · 2e163414
      Julia Lawall 提交于
      Error handling code following a kmalloc should free the allocated data.
      Out_unlock is used on both success and failure, so free vm_priv before
      jumping to that label.
      
      A simplified version of the semantic match that finds the problem is as
      follows: (http://coccinelle.lip6.fr)
      
      // <smpl>
      @r exists@
      local idexpression x;
      statement S;
      identifier f1;
      position p1,p2;
      expression *ptr != NULL;
      @@
      
      x@p1 = \(kmalloc\|kzalloc\|kcalloc\)(...);
      ...
      if (x == NULL) S
      <... when != x
           when != if (...) { <+...x...+> }
      x->f1
      ...>
      (
       return \(0\|<+...x...+>\|ptr\);
      |
       return@p2 ...;
      )
      
      @script:python@
      p1 << r.p1;
      p2 << r.p2;
      @@
      
      print "* file: %s kmalloc %s return %s" % (p1[0].file,p1[0].line,p2[0].line)
      // </smpl>
      Signed-off-by: NJulia Lawall <julia@diku.dk>
      [v1: Altered the description a bit]
      Signed-off-by: NKonrad Rzeszutek Wilk <konrad.wilk@oracle.com>
      2e163414
  25. 22 12月, 2011 1 次提交