Index: /trunk/src/VBox/Devices/Bus/DevPciIch9.cpp
===================================================================
--- /trunk/src/VBox/Devices/Bus/DevPciIch9.cpp	(revision 32959)
+++ /trunk/src/VBox/Devices/Bus/DevPciIch9.cpp	(revision 32960)
@@ -193,5 +193,5 @@
     GCPhysAddr = GCPhysAddr - pGlobals->u64PciConfigMMioAddress;
     pPciAddr->iBus          = (GCPhysAddr >> 20) & ((1<<8)       - 1);
-    pPciAddr->iDeviceFunc   = (GCPhysAddr >> 15) & ((1<<(5+3))   - 1); // 5 bits - device, 3 bits - function
+    pPciAddr->iDeviceFunc   = (GCPhysAddr >> 12) & ((1<<(5+3))   - 1); // 5 bits - device, 3 bits - function
     pPciAddr->iRegister     = (GCPhysAddr >>  0) & ((1<<(6+4+2)) - 1); // 6 bits - register, 4 bits - extended register, 2 bits -Byte Enable
 }
@@ -573,4 +573,6 @@
     uint32_t u32 = 0;
 
+    Log2(("ich9pciMcfgMMIOWrite: %p(%d) \n", GCPhysAddr, cb));
+
     PCI_LOCK(pDevIns, VINF_IOM_HC_IOPORT_WRITE);
 
@@ -604,5 +606,7 @@
     uint32_t    rv = 0xffffffff;
 
-    PCI_LOCK(pDevIns, VINF_IOM_HC_IOPORT_WRITE);
+    Log2(("ich9pciMcfgMMIORead: %p(%d) \n", GCPhysAddr, cb));
+
+    PCI_LOCK(pDevIns, VINF_IOM_HC_IOPORT_READ);
 
     ich9pciPhysToPciAddr(pGlobals, GCPhysAddr, &aDest);
@@ -2206,6 +2210,12 @@
     if (pGlobals->u64PciConfigMMioAddress != 0)
     {
-        rc = PDMDevHlpMMIORegister(pDevIns, pGlobals->u64PciConfigMMioAddress, pGlobals->u64PciConfigMMioLength, pGlobals,
-                                   ich9pciMcfgMMIOWrite, ich9pciMcfgMMIORead, NULL, "MCFG ranges");
+        rc = PDMDevHlpMMIORegister(pDevIns,
+                                   pGlobals->u64PciConfigMMioAddress,
+                                   pGlobals->u64PciConfigMMioLength,
+                                   0,
+                                   ich9pciMcfgMMIOWrite,
+                                   ich9pciMcfgMMIORead,
+                                   NULL /* fill */,
+                                   "MCFG ranges");
         if (RT_FAILURE(rc))
         {
@@ -2223,5 +2233,5 @@
                                           "ich9pciMcfgMMIOWrite",
                                           "ich9pciMcfgMMIORead",
-                                          NULL);
+                                          NULL /* fill */);
              if (RT_FAILURE(rc))
              {
@@ -2241,5 +2251,5 @@
                                           "ich9pciMcfgMMIOWrite",
                                           "ich9pciMcfgMMIORead",
-                                          NULL);
+                                          NULL /* fill */);
              if (RT_FAILURE(rc))
              {
Index: /trunk/src/VBox/Devices/PC/DevAPIC.cpp
===================================================================
--- /trunk/src/VBox/Devices/PC/DevAPIC.cpp	(revision 32959)
+++ /trunk/src/VBox/Devices/PC/DevAPIC.cpp	(revision 32960)
@@ -1449,12 +1449,4 @@
 
     index = (addr >> 4) & 0xff;
-    addr -= (s->apicbase & ~0xfff);
-
-    if (addr > 0xfff || (index == 0))
-    {
-        /* MSR area read, undefined result by spec */
-        Log(("APIC: MSR area read: %x\n", index));
-        return 0;
-    }
 
     switch(index) {
@@ -1542,5 +1534,5 @@
 #endif
 
-    index = (addr >> 4) & 0xff;  
+    index = (addr >> 4) & 0xff;
 
     switch(index) {
@@ -2850,5 +2842,5 @@
      */
     IoApicReg.u32Version  = PDM_IOAPICREG_VERSION;
-    IoApicReg.pfnSetIrqR3 = ioapicSetIrq;    
+    IoApicReg.pfnSetIrqR3 = ioapicSetIrq;
     IoApicReg.pszSetIrqRC = fGCEnabled ? "ioapicSetIrq" : NULL;
     IoApicReg.pszSetIrqR0 = fR0Enabled ? "ioapicSetIrq" : NULL;
