Commit 34984f54b7e8cb29632e921fb2f47b403c0e617a

Authored by Linus Torvalds

Merge branch 'v2.6.36-rc6-urgent-fixes' of git://xenbits.xen.org/people/sstabellini/linux-pvhvm

* 'v2.6.36-rc6-urgent-fixes' of git://xenbits.xen.org/people/sstabellini/linux-pvhvm:
  xen: do not initialize PV timers on HVM if !xen_have_vector_callback
  xen: do not set xenstored_ready before xenbus_probe on hvm

Showing 2 changed files Side-by-side Diff

... ... @@ -489,8 +489,9 @@
489 489 __init void xen_hvm_init_time_ops(void)
490 490 {
491 491 /* vector callback is needed otherwise we cannot receive interrupts
492   - * on cpu > 0 */
493   - if (!xen_have_vector_callback && num_present_cpus() > 1)
  492 + * on cpu > 0 and at this point we don't know how many cpus are
  493 + * available */
  494 + if (!xen_have_vector_callback)
494 495 return;
495 496 if (!xen_feature(XENFEAT_hvm_safe_pvclock)) {
496 497 printk(KERN_INFO "Xen doesn't support pvclock on HVM,"
drivers/xen/xenbus/xenbus_probe.c
... ... @@ -755,7 +755,10 @@
755 755 {
756 756 int ret = 0;
757 757  
758   - blocking_notifier_chain_register(&xenstore_chain, nb);
  758 + if (xenstored_ready > 0)
  759 + ret = nb->notifier_call(nb, 0, NULL);
  760 + else
  761 + blocking_notifier_chain_register(&xenstore_chain, nb);
759 762  
760 763 return ret;
761 764 }
... ... @@ -769,7 +772,7 @@
769 772  
770 773 void xenbus_probe(struct work_struct *unused)
771 774 {
772   - BUG_ON((xenstored_ready <= 0));
  775 + xenstored_ready = 1;
773 776  
774 777 /* Enumerate devices in xenstore and watch for changes. */
775 778 xenbus_probe_devices(&xenbus_frontend);
776 779  
... ... @@ -835,8 +838,8 @@
835 838 xen_store_evtchn = xen_start_info->store_evtchn;
836 839 xen_store_mfn = xen_start_info->store_mfn;
837 840 xen_store_interface = mfn_to_virt(xen_store_mfn);
  841 + xenstored_ready = 1;
838 842 }
839   - xenstored_ready = 1;
840 843 }
841 844  
842 845 /* Initialize the interface to xenstore. */