History

Merge tag 'for-linus-4.16a-rc4-tag' of git://git.kernel.org/pub/scm/linux/kernel/git/xen/tip

Pull xen fixes from Juergen Gross: "Five minor fixes for Xen-specific drivers" * tag 'for-linus-4.16a-rc4-tag' of git://git.kernel.org/pub/scm/linux/kernel/git/xen/tip: pvcalls-front: 64-bit align flags x86/xen: add tty0 and hvc0 as preferred consoles for dom0 xen-netfront: Fix hang on device removal xen/pirq: fix error path cleanup when binding MSIs xen/pvcalls: fix null pointer dereference on map->sock

Linus Torvalds committed 8 years ago

Commit 0573fed2 parents 2833419 d811bce5 files · +21 −9Browse files

Unified · Split

5 files
  1. arch/x86/xen/enlighten_pv.c +4 −2
  2. drivers/net/xen-netfront.c +6 −1
  3. drivers/xen/events/events_base.c +2 −2
  4. drivers/xen/pvcalls-back.c +1 −1
  5. drivers/xen/pvcalls-front.c +8 −3
arch/x86/xen/enlighten_pv.c+4−2
@@ -1376,8 +1376,6 @@ asmlinkage __visible void __init xen_start_kernel(void) · 1375 unmodified lines
1376 1376
1377 if (!xen_initial_domain()) {1377 if (!xen_initial_domain()) {
1378 add_preferred_console("xenboot", 0, NULL);1378 add_preferred_console("xenboot", 0, NULL);
1379 add_preferred_console("tty", 0, NULL);
1380 add_preferred_console("hvc", 0, NULL);
1381 if (pci_xen)1379 if (pci_xen)
1382 x86_init.pci.arch_init = pci_xen_init;1380 x86_init.pci.arch_init = pci_xen_init;
1383 } else {1381 } else {
@@ -1410,6 +1408,10 @@ asmlinkage __visible void __init xen_start_kernel(void) · 26 unmodified lines
1410 1408
1411 xen_boot_params_init_edd();1409 xen_boot_params_init_edd();
1412 }1410 }
1411
1412 add_preferred_console("tty", 0, NULL);
1413 add_preferred_console("hvc", 0, NULL);
1414
1413#ifdef CONFIG_PCI1415#ifdef CONFIG_PCI
1414 /* PCI BIOS service won't work from a PV guest. */1416 /* PCI BIOS service won't work from a PV guest. */
1415 pci_probe &= ~PCI_PROBE_BIOS;1417 pci_probe &= ~PCI_PROBE_BIOS;
drivers/net/xen-netfront.c+6−1
@@ -2005,7 +2005,10 @@ static void netback_changed(struct xenbus_device *dev, · 2004 unmodified lines
2005 case XenbusStateInitialised:2005 case XenbusStateInitialised:
2006 case XenbusStateReconfiguring:2006 case XenbusStateReconfiguring:
2007 case XenbusStateReconfigured:2007 case XenbusStateReconfigured:
2008 break;
2009
2008 case XenbusStateUnknown:2010 case XenbusStateUnknown:
2011 wake_up_all(&module_unload_q);
2009 break;2012 break;
2010 2013
2011 case XenbusStateInitWait:2014 case XenbusStateInitWait:
@@ -2136,7 +2139,9 @@ static int xennet_remove(struct xenbus_device *dev) · 124 unmodified lines
2136 xenbus_switch_state(dev, XenbusStateClosing);2139 xenbus_switch_state(dev, XenbusStateClosing);
2137 wait_event(module_unload_q,2140 wait_event(module_unload_q,
2138 xenbus_read_driver_state(dev->otherend) ==2141 xenbus_read_driver_state(dev->otherend) ==
2139 XenbusStateClosing);2142 XenbusStateClosing ||
2143 xenbus_read_driver_state(dev->otherend) ==
2144 XenbusStateUnknown);
2140 2145
2141 xenbus_switch_state(dev, XenbusStateClosed);2146 xenbus_switch_state(dev, XenbusStateClosed);
2142 wait_event(module_unload_q,2147 wait_event(module_unload_q,
drivers/xen/events/events_base.c+2−2
@@ -755,8 +755,8 @@ out: · 754 unmodified lines
755 mutex_unlock(&irq_mapping_update_lock);755 mutex_unlock(&irq_mapping_update_lock);
756 return irq;756 return irq;
757error_irq:757error_irq:
758 for (; i >= 0; i--)758 while (nvec--)
759 __unbind_from_irq(irq + i);759 __unbind_from_irq(irq + nvec);
760 mutex_unlock(&irq_mapping_update_lock);760 mutex_unlock(&irq_mapping_update_lock);
761 return ret;761 return ret;
762}762}
drivers/xen/pvcalls-back.c+1−1
@@ -416,7 +416,7 @@ static int pvcalls_back_connect(struct xenbus_device *dev, · 415 unmodified lines
416 sock);416 sock);
417 if (!map) {417 if (!map) {
418 ret = -EFAULT;418 ret = -EFAULT;
419 sock_release(map->sock);419 sock_release(sock);
420 }420 }
421 421
422out:422out:
drivers/xen/pvcalls-front.c+8−3
@@ -73,20 +73,25 @@ struct sock_mapping { · 72 unmodified lines
73 wait_queue_head_t inflight_conn_req;73 wait_queue_head_t inflight_conn_req;
74 } active;74 } active;
75 struct {75 struct {
76 /* Socket status */76 /*
77 * Socket status, needs to be 64-bit aligned due to the
78 * test_and_* functions which have this requirement on arm64.
79 */
77#define PVCALLS_STATUS_UNINITALIZED 080#define PVCALLS_STATUS_UNINITALIZED 0
78#define PVCALLS_STATUS_BIND 181#define PVCALLS_STATUS_BIND 1
79#define PVCALLS_STATUS_LISTEN 282#define PVCALLS_STATUS_LISTEN 2
80 uint8_t status;83 uint8_t status __attribute__((aligned(8)));
81 /*84 /*
82 * Internal state-machine flags.85 * Internal state-machine flags.
83 * Only one accept operation can be inflight for a socket.86 * Only one accept operation can be inflight for a socket.
84 * Only one poll operation can be inflight for a given socket.87 * Only one poll operation can be inflight for a given socket.
88 * flags needs to be 64-bit aligned due to the test_and_*
89 * functions which have this requirement on arm64.
85 */90 */
86#define PVCALLS_FLAG_ACCEPT_INFLIGHT 091#define PVCALLS_FLAG_ACCEPT_INFLIGHT 0
87#define PVCALLS_FLAG_POLL_INFLIGHT 192#define PVCALLS_FLAG_POLL_INFLIGHT 1
88#define PVCALLS_FLAG_POLL_RET 293#define PVCALLS_FLAG_POLL_RET 2
89 uint8_t flags;94 uint8_t flags __attribute__((aligned(8)));
90 uint32_t inflight_req_id;95 uint32_t inflight_req_id;
91 struct sock_mapping *accept_map;96 struct sock_mapping *accept_map;
92 wait_queue_head_t inflight_accept_req;97 wait_queue_head_t inflight_accept_req;