[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] [v8][PATCH 06/16] hvmloader/pci: disable all pci devices conflicting with rdm



What about this?

Looks reasonable (but don't forget that I continue to be unconvinced
that the patch as a whole makes sense).

Yes, I always keep this in my mind as I mentioned in patch #00. Any risk you're still concerning? Is it that case if guest OS force enabling these devices again? IMO, at this point there are two cases:

#1. Without passing through a RMRR device

Those emulated devices don't create 1:1 mapping so its safe, right?

#2. With passing through a RMRR device

This just probably cause these associated devices not to work well, but still don't bring any impact to other Domains, right? I mean this isn't going to worsen the preexisting situation.

If I'm wrong please correct me.

Thanks
Tiejun


Jan

+    bool is_conflict = false;

       for ( devfn = 0; devfn < 256; devfn++ )
       {
@@ -60,7 +61,7 @@ static void disable_conflicting_devices(void)
               continue;

           /* Check all bars */
-        for ( bar = 0; bar < 7; bar++ )
+        for ( bar = 0; bar < 7 && !is_conflict; bar++ )
           {
               bar_reg = PCI_BASE_ADDRESS_0 + 4*bar;
               if ( bar == 6 )
@@ -89,7 +90,7 @@ static void disable_conflicting_devices(void)
               bar_sz = pci_readl(devfn, bar_reg);
               bar_sz &= PCI_BASE_ADDRESS_MEM_MASK;

-            for ( i = 0; i < memory_map.nr_map ; i++ )
+            for ( i = 0; i < memory_map.nr_map && !is_conflict; i++ )
               {
                   if ( memory_map.map[i].type == E820_RESERVED )
                   {
@@ -105,13 +106,13 @@ static void disable_conflicting_devices(void)
                                  devfn>>3, devfn&7, bar_reg, bar_data);
                           cmd = pci_readw(devfn, PCI_COMMAND);
                           pci_writew(devfn, PCI_COMMAND, ~cmd);
-                        /* Jump next device. */
-                        goto check_next_device;
+                        /* So need to jump next device. */
+                        is_conflict = true;
                       }
                   }
               }
           }
- check_next_device:
+        is_conflict = false;
       }
   }

Thanks
Tiejun





_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.