1Chinese translated version of Documentation/driver-api/io_ordering.rst 2 3If you have any comment or update to the content, please contact the 4original document maintainer directly. However, if you have a problem 5communicating in English you can also ask the Chinese maintainer for 6help. Contact the Chinese maintainer if this translation is outdated 7or if there is a problem with the translation. 8 9Chinese maintainer: Lin Yongting <linyongting@gmail.com> 10--------------------------------------------------------------------- 11Documentation/driver-api/io_ordering.rst \xE7\x9A\x84\xE4\xB8\xAD\xE6\x96\x87\xE7\xBF\xBB\xE8\xAF\x91 12 13\xE5\xA6\x82\xE6\x9E\x9C\xE6\x83\xB3\xE8\xAF\x84\xE8\xAE\xBA\xE6\x88\x96\xE6\x9B\xB4\xE6\x96\xB0\xE6\x9C\xAC\xE6\x96\x87\xE7\x9A\x84\xE5\x86\x85\xE5\xAE\xB9\xEF\xBC\x8C\xE8\xAF\xB7\xE7\x9B\xB4\xE6\x8E\xA5\xE8\x81\x94\xE7\xB3\xBB\xE5\x8E\x9F\xE6\x96\x87\xE6\xA1\xA3\xE7\x9A\x84\xE7\xBB\xB4\xE6\x8A\xA4\xE8\x80\x85\xE3\x80\x82\xE5\xA6\x82\xE6\x9E\x9C\xE4\xBD\xA0\xE4\xBD\xBF\xE7\x94\xA8\xE8\x8B\xB1\xE6\x96\x87 14\xE4\xBA\xA4\xE6\xB5\x81\xE6\x9C\x89\xE5\x9B\xB0\xE9\x9A\xBE\xE7\x9A\x84\xE8\xAF\x9D\xEF\xBC\x8C\xE4\xB9\x9F\xE5\x8F\xAF\xE4\xBB\xA5\xE5\x90\x91\xE4\xB8\xAD\xE6\x96\x87\xE7\x89\x88\xE7\xBB\xB4\xE6\x8A\xA4\xE8\x80\x85\xE6\xB1\x82\xE5\x8A\xA9\xE3\x80\x82\xE5\xA6\x82\xE6\x9E\x9C\xE6\x9C\xAC\xE7\xBF\xBB\xE8\xAF\x91\xE6\x9B\xB4\xE6\x96\xB0\xE4\xB8\x8D\xE5\x8F\x8A\xE6\x97\xB6\xE6\x88\x96\xE8\x80\x85\xE7\xBF\xBB 15\xE8\xAF\x91\xE5\xAD\x98\xE5\x9C\xA8\xE9\x97\xAE\xE9\xA2\x98\xEF\xBC\x8C\xE8\xAF\xB7\xE8\x81\x94\xE7\xB3\xBB\xE4\xB8\xAD\xE6\x96\x87\xE7\x89\x88\xE7\xBB\xB4\xE6\x8A\xA4\xE8\x80\x85\xE3\x80\x82 16 17\xE4\xB8\xAD\xE6\x96\x87\xE7\x89\x88\xE7\xBB\xB4\xE6\x8A\xA4\xE8\x80\x85\xEF\xBC\x9A \xE6\x9E\x97\xE6\xB0\xB8\xE5\x90\xAC Lin Yongting <linyongting@gmail.com> 18\xE4\xB8\xAD\xE6\x96\x87\xE7\x89\x88\xE7\xBF\xBB\xE8\xAF\x91\xE8\x80\x85\xEF\xBC\x9A \xE6\x9E\x97\xE6\xB0\xB8\xE5\x90\xAC Lin Yongting <linyongting@gmail.com> 19\xE4\xB8\xAD\xE6\x96\x87\xE7\x89\x88\xE6\xA0\xA1\xE8\xAF\x91\xE8\x80\x85\xEF\xBC\x9A \xE6\x9E\x97\xE6\xB0\xB8\xE5\x90\xAC Lin Yongting <linyongting@gmail.com> 20 21 22\xE4\xBB\xA5\xE4\xB8\x8B\xE4\xB8\xBA\xE6\xAD\xA3\xE6\x96\x87 23--------------------------------------------------------------------- 24 25\xE5\x9C\xA8\xE6\x9F\x90\xE4\xBA\x9B\xE5\xB9\xB3\xE5\x8F\xB0\xE4\xB8\x8A\xEF\xBC\x8C\xE6\x89\x80\xE8\xB0\x93\xE7\x9A\x84\xE5\x86\x85\xE5\xAD\x98\xE6\x98\xA0\xE5\xB0\x84I/O\xE6\x98\xAF\xE5\xBC\xB1\xE9\xA1\xBA\xE5\xBA\x8F\xE3\x80\x82\xE5\x9C\xA8\xE8\xBF\x99\xE4\xBA\x9B\xE5\xB9\xB3\xE5\x8F\xB0\xE4\xB8\x8A\xEF\xBC\x8C\xE9\xA9\xB1\xE5\x8A\xA8\xE5\xBC\x80\xE5\x8F\x91\xE8\x80\x85\xE6\x9C\x89\xE8\xB4\xA3\xE4\xBB\xBB 26\xE4\xBF\x9D\xE8\xAF\x81I/O\xE5\x86\x85\xE5\xAD\x98\xE6\x98\xA0\xE5\xB0\x84\xE5\x9C\xB0\xE5\x9D\x80\xE7\x9A\x84\xE5\x86\x99\xE6\x93\x8D\xE4\xBD\x9C\xE6\x8C\x89\xE7\xA8\x8B\xE5\xBA\x8F\xE5\x9B\xBE\xE6\x84\x8F\xE7\x9A\x84\xE9\xA1\xBA\xE5\xBA\x8F\xE8\xBE\xBE\xE5\x88\xB0\xE8\xAE\xBE\xE5\xA4\x87\xE3\x80\x82\xE9\x80\x9A\xE5\xB8\xB8\xE8\xAF\xBB\xE5\x8F\x96\xE4\xB8\x80\xE4\xB8\xAA\xE2\x80\x9C\xE5\xAE\x89\xE5\x85\xA8\xE2\x80\x9D 27\xE8\xAE\xBE\xE5\xA4\x87\xE5\xAF\x84\xE5\xAD\x98\xE5\x99\xA8\xE6\x88\x96\xE6\xA1\xA5\xE5\xAF\x84\xE5\xAD\x98\xE5\x99\xA8\xEF\xBC\x8C\xE8\xA7\xA6\xE5\x8F\x91IO\xE8\x8A\xAF\xE7\x89\x87\xE6\xB8\x85\xE5\x88\xB7\xE6\x9C\xAA\xE5\xA4\x84\xE7\x90\x86\xE7\x9A\x84\xE5\x86\x99\xE6\x93\x8D\xE4\xBD\x9C\xE5\x88\xB0\xE8\xBE\xBE\xE8\xAE\xBE\xE5\xA4\x87\xE5\x90\x8E\xE6\x89\x8D\xE5\xA4\x84\xE7\x90\x86\xE8\xAF\xBB\xE6\x93\x8D\xE4\xBD\x9C\xEF\xBC\x8C 28\xE8\x80\x8C\xE8\xBE\xBE\xE5\x88\xB0\xE4\xBF\x9D\xE8\xAF\x81\xE7\x9B\xAE\xE7\x9A\x84\xE3\x80\x82\xE9\xA9\xB1\xE5\x8A\xA8\xE7\xA8\x8B\xE5\xBA\x8F\xE9\x80\x9A\xE5\xB8\xB8\xE5\x9C\xA8spinlock\xE4\xBF\x9D\xE6\x8A\xA4\xE7\x9A\x84\xE4\xB8\xB4\xE7\x95\x8C\xE5\x8C\xBA\xE9\x80\x80\xE5\x87\xBA\xE4\xB9\x8B\xE5\x89\x8D\xE4\xBD\xBF\xE7\x94\xA8\xE8\xBF\x99\xE7\xA7\x8D\xE6\x8A\x80\xE6\x9C\xAF\xE3\x80\x82 29\xE8\xBF\x99\xE4\xB9\x9F\xE5\x8F\xAF\xE4\xBB\xA5\xE4\xBF\x9D\xE8\xAF\x81\xE5\x90\x8E\xE9\x9D\xA2\xE7\x9A\x84\xE5\x86\x99\xE6\x93\x8D\xE4\xBD\x9C\xE5\x8F\xAA\xE5\x9C\xA8\xE5\x89\x8D\xE9\x9D\xA2\xE7\x9A\x84\xE5\x86\x99\xE6\x93\x8D\xE4\xBD\x9C\xE4\xB9\x8B\xE5\x90\x8E\xE5\x88\xB0\xE8\xBE\xBE\xE8\xAE\xBE\xE5\xA4\x87\xEF\xBC\x88\xE8\xBF\x99\xE9\x9D\x9E\xE5\xB8\xB8\xE7\xB1\xBB\xE4\xBC\xBC\xE4\xBA\x8E\xE5\x86\x85\xE5\xAD\x98 30\xE5\xB1\x8F\xE9\x9A\x9C\xE6\x93\x8D\xE4\xBD\x9C\xEF\xBC\x8Cmb()\xEF\xBC\x8C\xE4\xB8\x8D\xE8\xBF\x87\xE4\xBB\x85\xE9\x80\x82\xE7\x94\xA8\xE4\xBA\x8EI/O\xEF\xBC\x89\xE3\x80\x82 31 32\xE5\x81\x87\xE8\xAE\xBE\xE4\xB8\x80\xE4\xB8\xAA\xE8\xAE\xBE\xE5\xA4\x87\xE9\xA9\xB1\xE5\x8A\xA8\xE7\xA8\x8B\xE7\x9A\x84\xE5\x85\xB7\xE4\xBD\x93\xE4\xBE\x8B\xE5\xAD\x90\xEF\xBC\x9A 33 34 ... 35CPU A: spin_lock_irqsave(&dev_lock, flags) 36CPU A: val = readl(my_status); 37CPU A: ... 38CPU A: writel(newval, ring_ptr); 39CPU A: spin_unlock_irqrestore(&dev_lock, flags) 40 ... 41CPU B: spin_lock_irqsave(&dev_lock, flags) 42CPU B: val = readl(my_status); 43CPU B: ... 44CPU B: writel(newval2, ring_ptr); 45CPU B: spin_unlock_irqrestore(&dev_lock, flags) 46 ... 47 48\xE4\xB8\x8A\xE8\xBF\xB0\xE4\xBE\x8B\xE5\xAD\x90\xE4\xB8\xAD\xEF\xBC\x8C\xE8\xAE\xBE\xE5\xA4\x87\xE5\x8F\xAF\xE8\x83\xBD\xE4\xBC\x9A\xE5\x85\x88\xE6\x8E\xA5\xE6\x94\xB6\xE5\x88\xB0newval2\xE7\x9A\x84\xE5\x80\xBC\xEF\xBC\x8C\xE7\x84\xB6\xE5\x90\x8E\xE6\x8E\xA5\xE6\x94\xB6\xE5\x88\xB0newval\xE7\x9A\x84\xE5\x80\xBC\xEF\xBC\x8C\xE9\x97\xAE\xE9\xA2\x98\xE5\xB0\xB1 49\xE5\x8F\x91\xE7\x94\x9F\xE4\xBA\x86\xE3\x80\x82\xE4\xB8\x8D\xE8\xBF\x87\xE5\xBE\x88\xE5\xAE\xB9\xE6\x98\x93\xE9\x80\x9A\xE8\xBF\x87\xE4\xB8\x8B\xE9\x9D\xA2\xE6\x96\xB9\xE6\xB3\x95\xE6\x9D\xA5\xE4\xBF\xAE\xE5\xA4\x8D\xEF\xBC\x9A 50 51 ... 52CPU A: spin_lock_irqsave(&dev_lock, flags) 53CPU A: val = readl(my_status); 54CPU A: ... 55CPU A: writel(newval, ring_ptr); 56CPU A: (void)readl(safe_register); /* \xE9\x85\x8D\xE7\xBD\xAE\xE5\xAF\x84\xE5\xAD\x98\xE5\x99\xA8\xEF\xBC\x9F*/ 57CPU A: spin_unlock_irqrestore(&dev_lock, flags) 58 ... 59CPU B: spin_lock_irqsave(&dev_lock, flags) 60CPU B: val = readl(my_status); 61CPU B: ... 62CPU B: writel(newval2, ring_ptr); 63CPU B: (void)readl(safe_register); /* \xE9\x85\x8D\xE7\xBD\xAE\xE5\xAF\x84\xE5\xAD\x98\xE5\x99\xA8\xEF\xBC\x9F*/ 64CPU B: spin_unlock_irqrestore(&dev_lock, flags) 65 66\xE5\x9C\xA8\xE8\xA7\xA3\xE5\x86\xB3\xE6\x96\xB9\xE6\xA1\x88\xE4\xB8\xAD\xEF\xBC\x8C\xE8\xAF\xBB\xE5\x8F\x96safe_register\xE5\xAF\x84\xE5\xAD\x98\xE5\x99\xA8\xEF\xBC\x8C\xE8\xA7\xA6\xE5\x8F\x91IO\xE8\x8A\xAF\xE7\x89\x87\xE6\xB8\x85\xE5\x88\xB7\xE6\x9C\xAA\xE5\xA4\x84\xE7\x90\x86\xE7\x9A\x84\xE5\x86\x99\xE6\x93\x8D\xE4\xBD\x9C\xEF\xBC\x8C 67\xE5\x86\x8D\xE5\xA4\x84\xE7\x90\x86\xE5\x90\x8E\xE9\x9D\xA2\xE7\x9A\x84\xE8\xAF\xBB\xE6\x93\x8D\xE4\xBD\x9C\xEF\xBC\x8C\xE9\x98\xB2\xE6\xAD\xA2\xE5\xBC\x95\xE5\x8F\x91\xE6\x95\xB0\xE6\x8D\xAE\xE4\xB8\x8D\xE4\xB8\x80\xE8\x87\xB4\xE9\x97\xAE\xE9\xA2\x98\xE3\x80\x82 68