diff --git a/System/Xen/CBindings.hsc b/System/Xen/CBindings.hsc
--- a/System/Xen/CBindings.hsc
+++ b/System/Xen/CBindings.hsc
@@ -462,8 +462,8 @@
 data XCPhysInfo = XCPhysInfo {
     piThreadsPerCore :: Word32,
     piCoresPerSocket :: Word32,
-    piNrCPUs         :: Word32,
-    piNrNodes        :: Word32,
+    piNrCPUs         :: Word32, -- ^ Sockets per node (Xen < 3, I think) or the number of CPUs (Xen >= 3, I think)
+    piMaxNodeId      :: Word32,	-- ^ Number of nodes (Xen <= 3.4) or the max node ID (Xen >= 4.0)
     piCPUkhz         :: Word32,
     piTotalPages     :: Word64,
     piFreePages      :: Word64,
@@ -482,7 +482,11 @@
 #else
         s   <- (#peek xen_sysctl_physinfo_t, nr_cpus) ptr
 #endif
+#if XEN_SYSCTL_INTERFACE_VERSION < 7
         nr  <- (#peek xen_sysctl_physinfo_t, nr_nodes) ptr
+#else
+	nr <- (#peek xen_sysctl_physinfo_t, max_node_id) ptr
+#endif
         cpu <- (#peek xen_sysctl_physinfo_t, cpu_khz) ptr
         tp  <- (#peek xen_sysctl_physinfo_t, total_pages) ptr
         fp  <- (#peek xen_sysctl_physinfo_t, free_pages) ptr
@@ -498,7 +502,11 @@
 #else
         (#poke xen_sysctl_physinfo_t, nr_cpus) ptr s
 #endif
+#if XEN_SYSCTL_INTERFACE_VERSION < 7
         (#poke xen_sysctl_physinfo_t, nr_nodes) ptr nr
+#else
+        (#poke xen_sysctl_physinfo_t, max_node_id) ptr nr
+#endif
         (#poke xen_sysctl_physinfo_t, cpu_khz) ptr cpu
         (#poke xen_sysctl_physinfo_t, total_pages) ptr tp
         (#poke xen_sysctl_physinfo_t, free_pages) ptr fp
diff --git a/hsXenCtrl.cabal b/hsXenCtrl.cabal
--- a/hsXenCtrl.cabal
+++ b/hsXenCtrl.cabal
@@ -1,5 +1,5 @@
 name:                hsXenCtrl
-version:             0.1.1
+version:             0.2.0
 synopsis:            FFI bindings to the Xen Control library.
 description:         FFI bindings to xenctrl.h and perhaps more.
                      The System.Xen.CBindings should provide direct access
