# HG changeset patch
# User Isaku Yamahata <yamahata@xxxxxxxxxxxxx>
# Date 1233115643 -32400
# Node ID 9ab1c319531f646c0ac3a3ee5c6038d16cd43e92
# Parent 4caff484c9f432c6d1baf32f58cc2f8ea7c79492
# Parent 83b71f4b5cb216d09856391d8616ee2cb6525c73
merge with linux-2.6.18-xen.hg
---
arch/ia64/xen/xcom_privcmd.c | 70 ---------------------------------------
drivers/pci/Kconfig | 2 -
drivers/pci/pcie/portdrv_pci.c | 2 -
drivers/xen/pciback/conf_space.c | 5 ++
include/xen/interface/memory.h | 58 ++++++++++----------------------
net/ipv4/tcp.c | 13 +++----
6 files changed, 32 insertions(+), 118 deletions(-)
diff -r 4caff484c9f4 -r 9ab1c319531f arch/ia64/xen/xcom_privcmd.c
--- a/arch/ia64/xen/xcom_privcmd.c Wed Jan 28 12:27:28 2009 +0900
+++ b/arch/ia64/xen/xcom_privcmd.c Wed Jan 28 13:07:23 2009 +0900
@@ -567,80 +567,12 @@ xencomm_privcmd_memory_op(privcmd_hyperc
return ret;
}
- case XENMEM_translate_gpfn_list:
- {
- xen_translate_gpfn_list_t kern_op;
- xen_translate_gpfn_list_t __user *user_op;
- struct xencomm_handle *desc_gpfn = NULL;
- struct xencomm_handle *desc_mfn = NULL;
- struct xencomm_handle *desc_op;
- void *addr;
-
- user_op = (xen_translate_gpfn_list_t __user *)
- hypercall->arg[1];
- if (copy_from_user(&kern_op, user_op,
- sizeof(xen_translate_gpfn_list_t)))
- return -EFAULT;
- desc_op = xencomm_map_no_alloc(&kern_op, sizeof(kern_op));
-
- if (kern_op.nr_gpfns) {
- /* gpfn_list. */
- addr = xen_guest_handle(kern_op.gpfn_list);
-
- desc_gpfn = xencomm_map(addr, kern_op.nr_gpfns *
- sizeof(*xen_guest_handle
- (kern_op.gpfn_list)));
- if (addr != NULL && kern_op.nr_gpfns > 0 &&
- desc_gpfn == NULL)
- return -ENOMEM;
- set_xen_guest_handle(kern_op.gpfn_list,
- (void *)desc_gpfn);
-
- /* mfn_list. */
- addr = xen_guest_handle(kern_op.mfn_list);
-
- desc_mfn = xencomm_map(addr, kern_op.nr_gpfns *
- sizeof(*xen_guest_handle
- (kern_op.mfn_list)));
- if (addr != NULL && kern_op.nr_gpfns > 0 &&
- desc_mfn == NULL) {
- xencomm_free(desc_gpfn);
- return -ENOMEM;
- }
-
- set_xen_guest_handle(kern_op.mfn_list,
- (void *)desc_mfn);
- }
-
- ret = xencomm_arch_hypercall_memory_op(cmd, desc_op);
-
- xencomm_free(desc_gpfn);
- xencomm_free(desc_mfn);
-
- if (ret != 0)
- return ret;
-
- return ret;
- }
case XENMEM_add_to_physmap:
- case XENMEM_remove_from_physmap:
{
void __user *arg = (void __user *)hypercall->arg[1];
- size_t argsize;
struct xencomm_handle *desc;
- switch (cmd) {
- case XENMEM_add_to_physmap:
- argsize = sizeof(struct xen_add_to_physmap);
- break;
- case XENMEM_remove_from_physmap:
- argsize = sizeof(struct xen_remove_from_physmap);
- break;
- default:
- BUG();
- }
-
- desc = xencomm_map(arg, argsize);
+ desc = xencomm_map(arg, sizeof(struct xen_add_to_physmap));
if (desc == NULL)
return -ENOMEM;
diff -r 4caff484c9f4 -r 9ab1c319531f drivers/pci/Kconfig
--- a/drivers/pci/Kconfig Wed Jan 28 12:27:28 2009 +0900
+++ b/drivers/pci/Kconfig Wed Jan 28 13:07:23 2009 +0900
@@ -32,7 +32,7 @@ config PCI_DEBUG
config PCI_GUESTDEV
bool "PCI Device Reservation for Passthrough"
- depends on PCI
+ depends on PCI && ACPI
default y
help
Say Y here if you want to reserve PCI device for passthrough.
diff -r 4caff484c9f4 -r 9ab1c319531f drivers/pci/pcie/portdrv_pci.c
--- a/drivers/pci/pcie/portdrv_pci.c Wed Jan 28 12:27:28 2009 +0900
+++ b/drivers/pci/pcie/portdrv_pci.c Wed Jan 28 13:07:23 2009 +0900
@@ -37,7 +37,6 @@ static int pcie_portdrv_save_config(stru
return pci_save_state(dev);
}
-#ifdef CONFIG_PM
static int pcie_portdrv_restore_config(struct pci_dev *dev)
{
int retval;
@@ -50,6 +49,7 @@ static int pcie_portdrv_restore_config(s
return 0;
}
+#ifdef CONFIG_PM
static int pcie_portdrv_suspend(struct pci_dev *dev, pm_message_t state)
{
int ret = pcie_port_device_suspend(dev, state);
diff -r 4caff484c9f4 -r 9ab1c319531f drivers/xen/pciback/conf_space.c
--- a/drivers/xen/pciback/conf_space.c Wed Jan 28 12:27:28 2009 +0900
+++ b/drivers/xen/pciback/conf_space.c Wed Jan 28 13:07:23 2009 +0900
@@ -14,6 +14,9 @@
#include "pciback.h"
#include "conf_space.h"
#include "conf_space_quirks.h"
+
+static int permissive;
+module_param(permissive, bool, 0644);
#define DEFINE_PCI_CONFIG(op,size,type) \
int pciback_##op##_config_##size \
@@ -255,7 +258,7 @@ int pciback_config_write(struct pci_dev
* This means that some fields may still be read-only because
* they have entries in the config_field list that intercept
* the write and do nothing. */
- if (dev_data->permissive) {
+ if (dev_data->permissive || permissive) {
switch (size) {
case 1:
err = pci_write_config_byte(dev, offset,
diff -r 4caff484c9f4 -r 9ab1c319531f include/xen/interface/memory.h
--- a/include/xen/interface/memory.h Wed Jan 28 12:27:28 2009 +0900
+++ b/include/xen/interface/memory.h Wed Jan 28 13:07:23 2009 +0900
@@ -48,6 +48,8 @@
/* NUMA node to allocate from. */
#define XENMEMF_node(x) (((x) + 1) << 8)
#define XENMEMF_get_node(x) ((((x) >> 8) - 1) & 0xffu)
+/* Flag to populate physmap with populate-on-demand entries */
+#define XENMEMF_populate_on_demand (1<<16)
#endif
struct xen_memory_reservation {
@@ -204,7 +206,7 @@ struct xen_add_to_physmap {
/* Source mapping space. */
#define XENMAPSPACE_shared_info 0 /* shared info page */
#define XENMAPSPACE_grant_table 1 /* grant table page */
-#define XENMAPSPACE_mfn 2 /* usual MFN */
+#define XENMAPSPACE_gmfn 2 /* GMFN */
unsigned int space;
/* Index into source mapping space. */
@@ -216,45 +218,8 @@ typedef struct xen_add_to_physmap xen_ad
typedef struct xen_add_to_physmap xen_add_to_physmap_t;
DEFINE_XEN_GUEST_HANDLE(xen_add_to_physmap_t);
-/*
- * Unmaps the page appearing at a particular GPFN from the specified guest's
- * pseudophysical address space.
- * arg == addr of xen_remove_from_physmap_t.
- */
-#define XENMEM_remove_from_physmap 15
-struct xen_remove_from_physmap {
- /* Which domain to change the mapping for. */
- domid_t domid;
-
- /* GPFN of the current mapping of the page. */
- xen_pfn_t gpfn;
-};
-typedef struct xen_remove_from_physmap xen_remove_from_physmap_t;
-DEFINE_XEN_GUEST_HANDLE(xen_remove_from_physmap_t);
-
-/*
- * Translates a list of domain-specific GPFNs into MFNs. Returns a -ve error
- * code on failure. This call only works for auto-translated guests.
- */
-#define XENMEM_translate_gpfn_list 8
-struct xen_translate_gpfn_list {
- /* Which domain to translate for? */
- domid_t domid;
-
- /* Length of list. */
- xen_ulong_t nr_gpfns;
-
- /* List of GPFNs to translate. */
- XEN_GUEST_HANDLE(xen_pfn_t) gpfn_list;
-
- /*
- * Output list to contain MFN translations. May be the same as the input
- * list (in which case each input GPFN is overwritten with the output MFN).
- */
- XEN_GUEST_HANDLE(xen_pfn_t) mfn_list;
-};
-typedef struct xen_translate_gpfn_list xen_translate_gpfn_list_t;
-DEFINE_XEN_GUEST_HANDLE(xen_translate_gpfn_list_t);
+/*** REMOVED ***/
+/*#define XENMEM_translate_gpfn_list 8*/
/*
* Returns the pseudo-physical memory map as it was when the domain
@@ -299,6 +264,19 @@ typedef struct xen_foreign_memory_map xe
typedef struct xen_foreign_memory_map xen_foreign_memory_map_t;
DEFINE_XEN_GUEST_HANDLE(xen_foreign_memory_map_t);
+#define XENMEM_set_pod_target 16
+#define XENMEM_get_pod_target 17
+struct xen_pod_target {
+ /* IN */
+ uint64_t target_pages;
+ /* OUT */
+ uint64_t tot_pages;
+ uint64_t pod_cache_pages;
+ uint64_t pod_entries;
+ /* IN */
+ domid_t domid;
+};
+typedef struct xen_pod_target xen_pod_target_t;
#endif /* __XEN_PUBLIC_MEMORY_H__ */
/*
diff -r 4caff484c9f4 -r 9ab1c319531f net/ipv4/tcp.c
--- a/net/ipv4/tcp.c Wed Jan 28 12:27:28 2009 +0900
+++ b/net/ipv4/tcp.c Wed Jan 28 13:07:23 2009 +0900
@@ -2153,7 +2153,7 @@ struct sk_buff *tcp_tso_segment(struct s
unsigned int seq;
unsigned int delta;
unsigned int oldlen;
- unsigned int len;
+ unsigned int mss;
if (!pskb_may_pull(skb, sizeof(*th)))
goto out;
@@ -2169,10 +2169,13 @@ struct sk_buff *tcp_tso_segment(struct s
oldlen = (u16)~skb->len;
__skb_pull(skb, thlen);
+ mss = skb_shinfo(skb)->gso_size;
+ if (unlikely(skb->len <= mss))
+ goto out;
+
if (skb_gso_ok(skb, features | NETIF_F_GSO_ROBUST)) {
/* Packet is from an untrusted source, reset gso_segs. */
int type = skb_shinfo(skb)->gso_type;
- int mss;
if (unlikely(type &
~(SKB_GSO_TCPV4 |
@@ -2183,7 +2186,6 @@ struct sk_buff *tcp_tso_segment(struct s
!(type & (SKB_GSO_TCPV4 | SKB_GSO_TCPV6))))
goto out;
- mss = skb_shinfo(skb)->gso_size;
skb_shinfo(skb)->gso_segs = (skb->len + mss - 1) / mss;
segs = NULL;
@@ -2194,8 +2196,7 @@ struct sk_buff *tcp_tso_segment(struct s
if (IS_ERR(segs))
goto out;
- len = skb_shinfo(skb)->gso_size;
- delta = htonl(oldlen + (thlen + len));
+ delta = htonl(oldlen + (thlen + mss));
skb = segs;
th = skb->h.th;
@@ -2209,7 +2210,7 @@ struct sk_buff *tcp_tso_segment(struct s
th->check = csum_fold(csum_partial(skb->h.raw, thlen,
skb->csum));
- seq += len;
+ seq += mss;
skb = skb->next;
th = skb->h.th;
_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog
|