|   | 
      | 
  
  
      | 
      | 
  
 
     | 
    | 
  
  
     | 
    | 
  
  
    |   | 
      | 
  
  
    | 
         
xen-devel
[Xen-devel] Re: [PATCH][VTD][QUIRK] added quirks for Sandybridge	errata 
 
>>> On 14.01.11 at 00:40, "Kay, Allen M" <allen.m.kay@xxxxxxxxx> wrote:
>+static void snb_vtd_ops_preamble(struct iommu* iommu)
>+{
>+    struct intel_iommu *intel = iommu->intel;
>+    struct acpi_drhd_unit *drhd = intel ? intel->drhd : NULL;
>+    s_time_t start_time;
>+
>+    if ( !is_igd_drhd(drhd) || !is_snb_gfx )
>+        return;
>+
>+    if ( !map_igd_reg() )
>+        return;
>+
>+    *((volatile u32 *)(igd_reg_va + 0x54)) = 0x000FFFFF;
>+    *((volatile u32 *)(igd_reg_va + 0x700)) = 0;
>+
>+    start_time = NOW();
>+    while ( (*((volatile u32 *)(igd_reg_va + 0x2AC)) & 0xF) != 0 )
>+    {
>+        if ( NOW() > start_time + DMAR_OPERATION_TIMEOUT )
>+        {
>+            dprintk(XENLOG_INFO VTDPREFIX,
>+                    "snb_vtd_ops_preamble: failed to disable idle 
>handshake\n");
>+            break;
>+        }
>+        cpu_relax();
>+    }
>+
>+    *((volatile u32*)(igd_reg_va + 0x50)) = 0x10001;
>+}
>+
>+static void snb_vtd_ops_postamble(struct iommu* iommu)
>+{
>+    struct intel_iommu *intel = iommu->intel;
>+    struct acpi_drhd_unit *drhd = intel ? intel->drhd : NULL;
>+
>+    if ( !is_igd_drhd(drhd) || !is_snb_gfx )
>+        return;
>+
>+    if ( !map_igd_reg() )
>+        return;
>+
>+    *((volatile u32 *)(igd_reg_va + 0x54)) = 0xA;
>+    *((volatile u32 *)(igd_reg_va + 0x50)) = 0x10000;
>+}
Isn't there a risk that these MMIO writes interfere with the
operation of the actual driver running in a domain?
And even just in Xen itself, how do these writes get
synchronized? Callers of vtd_ops_preamble_quirk() don't
appear to be required to hold any particular lock.
Jan
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
 |   
 
| <Prev in Thread] | 
Current Thread | 
[Next in Thread>
 |  
- [Xen-devel] [PATCH][VTD][QUIRK] added quirks for Sandybridge errata workaround, WLAN, VT-d fault escalation, Kay, Allen M
- [Xen-devel] Re: [PATCH][VTD][QUIRK] added quirks for Sandybridge	errata workaround, WLAN, VT-d fault escalation,
Jan Beulich <=
- [Xen-devel] RE: [PATCH][VTD][QUIRK] added quirks for Sandybridge	errata workaround, WLAN, VT-d fault escalation, Kay, Allen M
- [Xen-devel] RE: [PATCH][VTD][QUIRK] added quirks for Sandybridge	errata workaround, WLAN, VT-d fault escalation, Jan Beulich
 - [Xen-devel] RE: [PATCH][VTD][QUIRK] added quirks for Sandybridge	errata workaround, WLAN, VT-d fault escalation, Kay, Allen M
 - [Xen-devel] RE: [PATCH][VTD][QUIRK] added quirks for Sandybridge	errata workaround, WLAN, VT-d fault escalation, Jan Beulich
 - [Xen-devel] RE: [PATCH][VTD][QUIRK] added quirks for Sandybridge errata workaround, WLAN, VT-d fault escalation, Kay, Allen M
 
  
  
  
 
 |  
  
| Previous by Date:  | 
[Xen-devel] RE: [PATCH] mem_sharing: fix race condition of nominate	and unshare, MaoXiaoyun | 
 
| Next by Date:  | 
[Xen-devel] [xen-unstable test] 5021: tolerable FAIL - PUSHED, xen . org | 
 
| Previous by Thread:  | 
[Xen-devel] [PATCH][VTD][QUIRK] added quirks for Sandybridge errata workaround, WLAN, VT-d fault escalation, Kay, Allen M | 
 
| Next by Thread:  | 
[Xen-devel] RE: [PATCH][VTD][QUIRK] added quirks for Sandybridge	errata workaround, WLAN, VT-d fault escalation, Kay, Allen M | 
 
| Indexes:  | 
[Date]
[Thread]
[Top]
[All Lists] | 
 
 
 
 | 
    | 
  
  
    |   | 
    |