WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-changelog

[Xen-changelog] [linux-2.6.18-xen] merge with linux-2.6.18-xen.hg (stagi

To: xen-changelog@xxxxxxxxxxxxxxxxxxx
Subject: [Xen-changelog] [linux-2.6.18-xen] merge with linux-2.6.18-xen.hg (staging)
From: "Xen patchbot-linux-2.6.18-xen" <patchbot-linux-2.6.18-xen@xxxxxxxxxxxxxxxxxxx>
Date: Fri, 09 Nov 2007 04:21:33 -0800
Delivery-date: Fri, 09 Nov 2007 05:30:20 -0800
Envelope-to: www-data@xxxxxxxxxxxxxxxxxx
List-help: <mailto:xen-changelog-request@lists.xensource.com?subject=help>
List-id: BK change log <xen-changelog.lists.xensource.com>
List-post: <mailto:xen-changelog@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-changelog>, <mailto:xen-changelog-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-changelog>, <mailto:xen-changelog-request@lists.xensource.com?subject=unsubscribe>
Reply-to: xen-devel@xxxxxxxxxxxxxxxxxxx
Sender: xen-changelog-bounces@xxxxxxxxxxxxxxxxxxx
# HG changeset patch
# User Alex Williamson <alex.williamson@xxxxxx>
# Date 1193929665 21600
# Node ID d827dfc6593e7300c68de12106ad510b6f832cda
# Parent  b4ace76fb245f3981cab1f167e2e70015b17e50d
# Parent  7df27803297a62661947de9bd5c83af0b4640878
merge with linux-2.6.18-xen.hg (staging)
---
 drivers/pci/bus.c               |    7 +++++++
 drivers/pci/quirks.c            |   34 ++++++++++++++++++++++++++++++++++
 drivers/xen/blkfront/vbd.c      |    4 ++--
 drivers/xen/core/xencomm.c      |    4 ++++
 drivers/xen/netfront/netfront.c |   38 +++++++++++++++++++++++---------------
 5 files changed, 70 insertions(+), 17 deletions(-)

diff -r b4ace76fb245 -r d827dfc6593e drivers/pci/bus.c
--- a/drivers/pci/bus.c Tue Oct 30 16:44:52 2007 -0600
+++ b/drivers/pci/bus.c Thu Nov 01 09:07:45 2007 -0600
@@ -16,6 +16,8 @@
 #include <linux/init.h>
 
 #include "pci.h"
+
+extern int pci_mem_align;
 
 /**
  * pci_bus_alloc_resource - allocate a resource from a parent bus
@@ -43,6 +45,11 @@ pci_bus_alloc_resource(struct pci_bus *b
        int i, ret = -ENOMEM;
 
        type_mask |= IORESOURCE_IO | IORESOURCE_MEM;
+
+       /* If the boot parameter 'pci-mem-align' was specified then we need to 
+          align the memory addresses, at page size alignment. */
+       if (pci_mem_align && (align < (PAGE_SIZE-1)))
+               align = PAGE_SIZE - 1;
 
        for (i = 0; i < PCI_BUS_NUM_RESOURCES; i++) {
                struct resource *r = bus->resource[i];
diff -r b4ace76fb245 -r d827dfc6593e drivers/pci/quirks.c
--- a/drivers/pci/quirks.c      Tue Oct 30 16:44:52 2007 -0600
+++ b/drivers/pci/quirks.c      Thu Nov 01 09:07:45 2007 -0600
@@ -22,6 +22,40 @@
 #include <linux/delay.h>
 #include <linux/acpi.h>
 #include "pci.h"
+
+/* A global flag which signals if we should page-align PCI mem windows. */
+int pci_mem_align = 0;
+
+static int __init set_pci_mem_align(char *str)
+{
+       pci_mem_align = 1;
+       return 1;
+}
+__setup("pci-mem-align", set_pci_mem_align);
+
+/* This quirk function enables us to force all memory resources which are 
+ * assigned to PCI devices, to be page-aligned.
+ */
+static void __devinit quirk_align_mem_resources(struct pci_dev *dev)
+{
+       int i;
+       struct resource *r;
+       resource_size_t old_start;
+
+       if (!pci_mem_align)
+               return;
+
+       for (i=0; i < DEVICE_COUNT_RESOURCE; i++) {
+               r = &dev->resource[i];
+               if ((r == NULL) || !(r->flags & IORESOURCE_MEM))
+                       continue;
+
+               old_start = r->start;
+               r->start = (r->start + PAGE_SIZE - 1) & ~(PAGE_SIZE - 1);
+               r->end = r->end - (old_start - r->start);
+       }
+}
+DECLARE_PCI_FIXUP_HEADER(PCI_ANY_ID, PCI_ANY_ID, quirk_align_mem_resources);
 
 /* The Mellanox Tavor device gives false positive parity errors
  * Mark this device with a broken_parity_status, to allow
diff -r b4ace76fb245 -r d827dfc6593e drivers/xen/blkfront/vbd.c
--- a/drivers/xen/blkfront/vbd.c        Tue Oct 30 16:44:52 2007 -0600
+++ b/drivers/xen/blkfront/vbd.c        Thu Nov 01 09:07:45 2007 -0600
@@ -361,7 +361,7 @@ xlvbd_barrier(struct blkfront_info *info
                info->feature_barrier ? QUEUE_ORDERED_DRAIN : 
QUEUE_ORDERED_NONE, NULL);
        if (err)
                return err;
-       printk("blkfront: %s: barriers %s\n",
+       printk(KERN_INFO "blkfront: %s: barriers %s\n",
               info->gd->disk_name, info->feature_barrier ? "enabled" : 
"disabled");
        return 0;
 }
@@ -369,7 +369,7 @@ int
 int
 xlvbd_barrier(struct blkfront_info *info)
 {
-       printk("blkfront: %s: barriers disabled\n", info->gd->disk_name);
+       printk(KERN_INFO "blkfront: %s: barriers disabled\n", 
info->gd->disk_name);
        return -ENOSYS;
 }
 #endif
diff -r b4ace76fb245 -r d827dfc6593e drivers/xen/core/xencomm.c
--- a/drivers/xen/core/xencomm.c        Tue Oct 30 16:44:52 2007 -0600
+++ b/drivers/xen/core/xencomm.c        Thu Nov 01 09:07:45 2007 -0600
@@ -27,6 +27,10 @@
 #include <asm/xen/xencomm.h>   /* for is_kern_addr() */
 #endif
 
+#ifdef HAVE_XEN_PLATFORM_COMPAT_H
+#include <xen/platform-compat.h>
+#endif
+
 static int xencomm_init(struct xencomm_desc *desc,
                        void *buffer, unsigned long bytes)
 {
diff -r b4ace76fb245 -r d827dfc6593e drivers/xen/netfront/netfront.c
--- a/drivers/xen/netfront/netfront.c   Tue Oct 30 16:44:52 2007 -0600
+++ b/drivers/xen/netfront/netfront.c   Thu Nov 01 09:07:45 2007 -0600
@@ -221,7 +221,7 @@ static int network_connect(struct net_de
 static int network_connect(struct net_device *);
 static void network_tx_buf_gc(struct net_device *);
 static void network_alloc_rx_buffers(struct net_device *);
-static int send_fake_arp(struct net_device *);
+static void send_fake_arp(struct net_device *);
 
 static irqreturn_t netif_int(int irq, void *dev_id, struct pt_regs *ptregs);
 
@@ -542,7 +542,7 @@ static void backend_changed(struct xenbu
                if (network_connect(netdev) != 0)
                        break;
                xenbus_switch_state(dev, XenbusStateConnected);
-               (void)send_fake_arp(netdev);
+               send_fake_arp(netdev);
                break;
 
        case XenbusStateClosing:
@@ -557,8 +557,9 @@ static void backend_changed(struct xenbu
  * @param dev device
  * @return 0 on success, error code otherwise
  */
-static int send_fake_arp(struct net_device *dev)
-{
+static void send_fake_arp(struct net_device *dev)
+{
+#ifdef CONFIG_INET
        struct sk_buff *skb;
        u32             src_ip, dst_ip;
 
@@ -567,16 +568,17 @@ static int send_fake_arp(struct net_devi
 
        /* No IP? Then nothing to do. */
        if (src_ip == 0)
-               return 0;
+               return;
 
        skb = arp_create(ARPOP_REPLY, ETH_P_ARP,
                         dst_ip, dev, src_ip,
                         /*dst_hw*/ NULL, /*src_hw*/ NULL,
                         /*target_hw*/ dev->dev_addr);
        if (skb == NULL)
-               return -ENOMEM;
-
-       return dev_queue_xmit(skb);
+               return;
+
+       dev_queue_xmit(skb);
+#endif
 }
 
 static inline int netfront_tx_slot_available(struct netfront_info *np)
@@ -2098,6 +2100,7 @@ static struct net_device * __devinit cre
        return ERR_PTR(err);
 }
 
+#ifdef CONFIG_INET
 /*
  * We use this notifier to send out a fake ARP reply to reset switches and
  * router ARP caches when an IP interface is brought up on a VIF.
@@ -2110,10 +2113,17 @@ inetdev_notify(struct notifier_block *th
 
        /* UP event and is it one of our devices? */
        if (event == NETDEV_UP && dev->open == network_open)
-               (void)send_fake_arp(dev);
+               send_fake_arp(dev);
 
        return NOTIFY_DONE;
 }
+
+static struct notifier_block notifier_inetdev = {
+       .notifier_call  = inetdev_notify,
+       .next           = NULL,
+       .priority       = 0
+};
+#endif
 
 
 static void netif_disconnect_backend(struct netfront_info *info)
@@ -2168,12 +2178,6 @@ static struct xenbus_driver netfront = {
 };
 
 
-static struct notifier_block notifier_inetdev = {
-       .notifier_call  = inetdev_notify,
-       .next           = NULL,
-       .priority       = 0
-};
-
 static int __init netif_init(void)
 {
        if (!is_running_on_xen())
@@ -2196,7 +2200,9 @@ static int __init netif_init(void)
 
        IPRINTK("Initialising virtual ethernet driver.\n");
 
+#ifdef CONFIG_INET
        (void)register_inetaddr_notifier(&notifier_inetdev);
+#endif
 
        return xenbus_register_frontend(&netfront);
 }
@@ -2208,7 +2214,9 @@ static void __exit netif_exit(void)
        if (is_initial_xendomain())
                return;
 
+#ifdef CONFIG_INET
        unregister_inetaddr_notifier(&notifier_inetdev);
+#endif
 
        netif_exit_accel();
 

_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog

<Prev in Thread] Current Thread [Next in Thread>