mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-28 10:41:38 -04:00
xen: features and fixes for 4.10 rc0
-----BEGIN PGP SIGNATURE----- Version: GnuPG v2 iQEcBAABAgAGBQJYT5HMAAoJELDendYovxMvhNQH/1g/3ahM4JKN8Z0SbjKBEdQm yj2xOj6cE3l6wMSUblKjZD2DLLhpmcHT/E97Xro/lZQEfQJoMXXWWDFowMU/P1LA mJxb7Fzq5Wr+6eGSAlIQB270MrpNi/luf+CWHMwVA3V7R3KRXwonOdGQSkISIzCd tgIydEA3a9r2+HgeIBpZFZ4GcSrJQU75krMyl2tjD1C+jeYVd+zdoj2OnDsZQDZQ hDWApMpNbpSBAn7JtSSdXWSTBsGH0lUECebeYPhPQ2sX2P6Y8+UCGwA7i6FFdbTa agXfVSdRz8dCe3k19VcKDAw6nK9BTTMnEeEHmkmygIh6wuHPP44CzigTXIbJoXI= =zjfm -----END PGP SIGNATURE----- Merge tag 'for-linus-4.10-rc0-tag' of git://git.kernel.org/pub/scm/linux/kernel/git/xen/tip Pull xen updates from Juergen Gross: "Xen features and fixes for 4.10 These are some fixes, a move of some arm related headers to share them between arm and arm64 and a series introducing a helper to make code more readable. The most notable change is David stepping down as maintainer of the Xen hypervisor interface. This results in me sending you the pull requests for Xen related code from now on" * tag 'for-linus-4.10-rc0-tag' of git://git.kernel.org/pub/scm/linux/kernel/git/xen/tip: (29 commits) xen/balloon: Only mark a page as managed when it is released xenbus: fix deadlock on writes to /proc/xen/xenbus xen/scsifront: don't request a slot on the ring until request is ready xen/x86: Increase xen_e820_map to E820_X_MAX possible entries x86: Make E820_X_MAX unconditionally larger than E820MAX xen/pci: Bubble up error and fix description. xen: xenbus: set error code on failure xen: set error code on failures arm/xen: Use alloc_percpu rather than __alloc_percpu arm/arm64: xen: Move shared architecture headers to include/xen/arm xen/events: use xen_vcpu_id mapping for EVTCHNOP_status xen/gntdev: Use VM_MIXEDMAP instead of VM_IO to avoid NUMA balancing xen-scsifront: Add a missing call to kfree MAINTAINERS: update XEN HYPERVISOR INTERFACE xenfs: Use proc_create_mount_point() to create /proc/xen xen-platform: use builtin_pci_driver xen-netback: fix error handling output xen: make use of xenbus_read_unsigned() in xenbus xen: make use of xenbus_read_unsigned() in xen-pciback xen: make use of xenbus_read_unsigned() in xen-fbfront ...
This commit is contained in:
commit
aa3ecf388a
43 changed files with 669 additions and 780 deletions
|
|
@ -180,7 +180,6 @@ static void __balloon_append(struct page *page)
|
|||
static void balloon_append(struct page *page)
|
||||
{
|
||||
__balloon_append(page);
|
||||
adjust_managed_page_count(page, -1);
|
||||
}
|
||||
|
||||
/* balloon_retrieve: rescue a page from the balloon, if it is not empty. */
|
||||
|
|
@ -201,8 +200,6 @@ static struct page *balloon_retrieve(bool require_lowmem)
|
|||
else
|
||||
balloon_stats.balloon_low--;
|
||||
|
||||
adjust_managed_page_count(page, 1);
|
||||
|
||||
return page;
|
||||
}
|
||||
|
||||
|
|
@ -478,7 +475,7 @@ static enum bp_state increase_reservation(unsigned long nr_pages)
|
|||
#endif
|
||||
|
||||
/* Relinquish the page back to the allocator. */
|
||||
__free_reserved_page(page);
|
||||
free_reserved_page(page);
|
||||
}
|
||||
|
||||
balloon_stats.current_pages += rc;
|
||||
|
|
@ -509,6 +506,7 @@ static enum bp_state decrease_reservation(unsigned long nr_pages, gfp_t gfp)
|
|||
state = BP_EAGAIN;
|
||||
break;
|
||||
}
|
||||
adjust_managed_page_count(page, -1);
|
||||
scrub_page(page);
|
||||
list_add(&page->lru, &pages);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -947,7 +947,7 @@ static int find_virq(unsigned int virq, unsigned int cpu)
|
|||
continue;
|
||||
if (status.status != EVTCHNSTAT_virq)
|
||||
continue;
|
||||
if (status.u.virq == virq && status.vcpu == cpu) {
|
||||
if (status.u.virq == virq && status.vcpu == xen_vcpu_nr(cpu)) {
|
||||
rc = port;
|
||||
break;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -127,18 +127,21 @@ static int add_grefs(struct ioctl_gntalloc_alloc_gref *op,
|
|||
struct gntalloc_gref *gref, *next;
|
||||
|
||||
readonly = !(op->flags & GNTALLOC_FLAG_WRITABLE);
|
||||
rc = -ENOMEM;
|
||||
for (i = 0; i < op->count; i++) {
|
||||
gref = kzalloc(sizeof(*gref), GFP_KERNEL);
|
||||
if (!gref)
|
||||
if (!gref) {
|
||||
rc = -ENOMEM;
|
||||
goto undo;
|
||||
}
|
||||
list_add_tail(&gref->next_gref, &queue_gref);
|
||||
list_add_tail(&gref->next_file, &queue_file);
|
||||
gref->users = 1;
|
||||
gref->file_index = op->index + i * PAGE_SIZE;
|
||||
gref->page = alloc_page(GFP_KERNEL|__GFP_ZERO);
|
||||
if (!gref->page)
|
||||
if (!gref->page) {
|
||||
rc = -ENOMEM;
|
||||
goto undo;
|
||||
}
|
||||
|
||||
/* Grant foreign access to the page. */
|
||||
rc = gnttab_grant_foreign_access(op->domid,
|
||||
|
|
|
|||
|
|
@ -1007,7 +1007,7 @@ static int gntdev_mmap(struct file *flip, struct vm_area_struct *vma)
|
|||
|
||||
vma->vm_ops = &gntdev_vmops;
|
||||
|
||||
vma->vm_flags |= VM_DONTEXPAND | VM_DONTDUMP | VM_IO;
|
||||
vma->vm_flags |= VM_DONTEXPAND | VM_DONTDUMP | VM_MIXEDMAP;
|
||||
|
||||
if (use_ptemod)
|
||||
vma->vm_flags |= VM_DONTCOPY;
|
||||
|
|
|
|||
|
|
@ -125,8 +125,4 @@ static struct pci_driver platform_driver = {
|
|||
.id_table = platform_pci_tbl,
|
||||
};
|
||||
|
||||
static int __init platform_pci_init(void)
|
||||
{
|
||||
return pci_register_driver(&platform_driver);
|
||||
}
|
||||
device_initcall(platform_pci_init);
|
||||
builtin_pci_driver(platform_driver);
|
||||
|
|
|
|||
|
|
@ -362,7 +362,7 @@ static int xen_pcibk_reconfigure(struct xen_pcibk_device *pdev)
|
|||
int err = 0;
|
||||
int num_devs;
|
||||
int domain, bus, slot, func;
|
||||
int substate;
|
||||
unsigned int substate;
|
||||
int i, len;
|
||||
char state_str[64];
|
||||
char dev_str[64];
|
||||
|
|
@ -395,10 +395,8 @@ static int xen_pcibk_reconfigure(struct xen_pcibk_device *pdev)
|
|||
"configuration");
|
||||
goto out;
|
||||
}
|
||||
err = xenbus_scanf(XBT_NIL, pdev->xdev->nodename, state_str,
|
||||
"%d", &substate);
|
||||
if (err != 1)
|
||||
substate = XenbusStateUnknown;
|
||||
substate = xenbus_read_unsigned(pdev->xdev->nodename, state_str,
|
||||
XenbusStateUnknown);
|
||||
|
||||
switch (substate) {
|
||||
case XenbusStateInitialising:
|
||||
|
|
|
|||
|
|
@ -538,6 +538,8 @@ static int xenbus_file_open(struct inode *inode, struct file *filp)
|
|||
|
||||
nonseekable_open(inode, filp);
|
||||
|
||||
filp->f_mode &= ~FMODE_ATOMIC_POS; /* cdev-style semantics */
|
||||
|
||||
u = kzalloc(sizeof(*u), GFP_KERNEL);
|
||||
if (u == NULL)
|
||||
return -ENOMEM;
|
||||
|
|
|
|||
|
|
@ -702,7 +702,7 @@ device_initcall(xenbus_probe_initcall);
|
|||
*/
|
||||
static int __init xenstored_local_init(void)
|
||||
{
|
||||
int err = 0;
|
||||
int err = -ENOMEM;
|
||||
unsigned long page = 0;
|
||||
struct evtchn_alloc_unbound alloc_unbound;
|
||||
|
||||
|
|
@ -826,7 +826,7 @@ static int __init xenbus_init(void)
|
|||
* Create xenfs mountpoint in /proc for compatibility with
|
||||
* utilities that expect to find "xenbus" under "/proc/xen".
|
||||
*/
|
||||
proc_mkdir("xen", NULL);
|
||||
proc_create_mount_point("xen");
|
||||
#endif
|
||||
|
||||
out_error:
|
||||
|
|
|
|||
|
|
@ -224,13 +224,7 @@ static int read_frontend_details(struct xenbus_device *xendev)
|
|||
|
||||
int xenbus_dev_is_online(struct xenbus_device *dev)
|
||||
{
|
||||
int rc, val;
|
||||
|
||||
rc = xenbus_scanf(XBT_NIL, dev->nodename, "online", "%d", &val);
|
||||
if (rc != 1)
|
||||
val = 0; /* no online node present */
|
||||
|
||||
return val;
|
||||
return !!xenbus_read_unsigned(dev->nodename, "online", 0);
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(xenbus_dev_is_online);
|
||||
|
||||
|
|
|
|||
|
|
@ -559,6 +559,21 @@ int xenbus_scanf(struct xenbus_transaction t,
|
|||
}
|
||||
EXPORT_SYMBOL_GPL(xenbus_scanf);
|
||||
|
||||
/* Read an (optional) unsigned value. */
|
||||
unsigned int xenbus_read_unsigned(const char *dir, const char *node,
|
||||
unsigned int default_val)
|
||||
{
|
||||
unsigned int val;
|
||||
int ret;
|
||||
|
||||
ret = xenbus_scanf(XBT_NIL, dir, node, "%u", &val);
|
||||
if (ret <= 0)
|
||||
val = default_val;
|
||||
|
||||
return val;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(xenbus_read_unsigned);
|
||||
|
||||
/* Single printf and write: returns -errno or 0. */
|
||||
int xenbus_printf(struct xenbus_transaction t,
|
||||
const char *dir, const char *node, const char *fmt, ...)
|
||||
|
|
@ -672,7 +687,7 @@ static bool xen_strict_xenbus_quirk(void)
|
|||
}
|
||||
static void xs_reset_watches(void)
|
||||
{
|
||||
int err, supported = 0;
|
||||
int err;
|
||||
|
||||
if (!xen_hvm_domain() || xen_initial_domain())
|
||||
return;
|
||||
|
|
@ -680,9 +695,8 @@ static void xs_reset_watches(void)
|
|||
if (xen_strict_xenbus_quirk())
|
||||
return;
|
||||
|
||||
err = xenbus_scanf(XBT_NIL, "control",
|
||||
"platform-feature-xs_reset_watches", "%d", &supported);
|
||||
if (err != 1 || !supported)
|
||||
if (!xenbus_read_unsigned("control",
|
||||
"platform-feature-xs_reset_watches", 0))
|
||||
return;
|
||||
|
||||
err = xs_error(xs_single(XBT_NIL, XS_RESET_WATCHES, "", NULL));
|
||||
|
|
|
|||
Loading…
Reference in a new issue