Browse Source

修复ahci缓冲区地址错误的问题

fslongjin 2 years ago
parent
commit
3063a340e2
1 changed files with 2 additions and 2 deletions
  1. 2 2
      kernel/driver/disk/ahci/ahci.c

+ 2 - 2
kernel/driver/disk/ahci/ahci.c

@@ -315,13 +315,13 @@ static bool ahci_write(HBA_PORT *port, uint32_t startl, uint32_t starth, uint32_
     int i = 0;
     for (i = 0; i < cmdheader->prdtl - 1; ++i)
     {
-        cmdtbl->prdt_entry[i].dba = buf;
+        cmdtbl->prdt_entry[i].dba = virt_2_phys(buf);
         cmdtbl->prdt_entry[i].dbc = 8 * 1024 - 1; // 8K bytes
         cmdtbl->prdt_entry[i].i = 0;
         buf += 4 * 1024; // 4K words
         count -= 16;     // 16 sectors
     }
-    cmdtbl->prdt_entry[i].dba = buf;
+    cmdtbl->prdt_entry[i].dba = virt_2_phys(buf);
 
     cmdtbl->prdt_entry[i].dbc = count << 9; // 512 bytes per sector
     cmdtbl->prdt_entry[i].i = 0;