r500.html 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1">
  6. <style type="text/css">
  7. @import url('../css/main.css');
  8. </style>
  9. <title>ThinkPad R500</title>
  10. </head>
  11. <body>
  12. <div class="section">
  13. <h1 id="pagetop">ThinkPad R500</h1>
  14. <p>
  15. It is believed that all or most R500 laptops are compatible.
  16. See notes about <a href="../install/r500_external.html#cpu_compatibility">CPU compatibility</a> for
  17. potential incompatibilities.
  18. </p>
  19. <p>
  20. There are two possible flash chip sizes for the R500: 4MiB (32Mbit) or 8MiB (64Mbit).
  21. This can be identified by the type of flash chip below the palmrest: 4MiB is SOIC-8, 8MiB
  22. is SOIC-16.
  23. <b>
  24. NOTE: this paragraph is being treated with contempt. When an R500 was disassembled, it didn't look
  25. like there was an extra place for SOIC-16. It's highly likely that these laptops only have SOIC-8 (4MiB)
  26. flash chips. For now, libreboot will distribute 8MiB images just in case. If it is found later on
  27. that no 8MiB (SOIC-16) chips exist on the R500, then libreboot will cease to distribute 8MiB ROM images
  28. for this laptop. It is only said that the R500 has 4MiB or 8MiB, for now, since this is the case
  29. on other GM45 thinkpads that are supported in libreboot.
  30. </b>
  31. </p>
  32. <p>
  33. <b>The R400 laptops come with the ME (and sometimes AMT in addition) before flashing libreboot. Libreboot disables and removes it
  34. by using a modified descriptor: see <a href="gm45_remove_me.html">gm45_remove_me.html</a></b> (contains notes, plus
  35. instructions)
  36. </p>
  37. <p>
  38. Flashing instructions can be found at <a href="../install/index.html#flashrom">../install/index.html#flashrom</a>
  39. </p>
  40. <p>
  41. <b>
  42. NOTE: This board is unsupported in libreboot 20150518. To use it in libreboot, for now,
  43. you must build for it from source using the libreboot git repository.
  44. </b>
  45. </p>
  46. <p>
  47. <a href="index.html">Back to previous index</a>.
  48. </p>
  49. </div>
  50. <div class="section">
  51. <h2 id="compatibility_noblobs">Compatibility (without blobs)</h2>
  52. <div class="subsection">
  53. <h3 id="hwvirt">Hardware virtualization (vt-x)</h3>
  54. <p>
  55. The R400, when run without CPU microcode updates in coreboot, currently kernel panics
  56. if running QEMU with vt-x enabled on 2 cores for the guest. With a single core enabled
  57. for the guest, the guest panics (but the host is fine). Working around this in QEMU
  58. might be possible; if not, software virtualization should work fine (it's just slower).
  59. </p>
  60. <p>
  61. On GM45 hardware (with libreboot), make sure that the <i>kvm</i> and <i>kvm_intel</i> kernel modules
  62. are not loaded, when using QEMU.
  63. </p>
  64. <p>
  65. The following errata datasheet from Intel might help with investigation:
  66. <a href="http://download.intel.com/design/mobile/specupdt/320121.pdf">http://download.intel.com/design/mobile/specupdt/320121.pdf</a>
  67. </p>
  68. </div>
  69. </div>
  70. <div class="section">
  71. <h1 id="lcd_compatibility">LCD compatibly</h1>
  72. <p>
  73. Not all LCD panels are known to be compatible yet. See <a href="gm45_lcd.html">gm45_lcd.html</a>.
  74. </p>
  75. </div>
  76. <div class="section">
  77. <p>
  78. The R500 is almost identical to the X200, code-wise, but there are some hardware differences. See <a href="x200.html">x200.html</a>.
  79. </p>
  80. </div>
  81. <div class="section">
  82. <h2 id="regdumps">Hardware register dumps</h2>
  83. <p>
  84. The coreboot wiki <a href="http://www.coreboot.org/Motherboard_Porting_Guide">shows</a>
  85. how to collect various logs useful in porting to new
  86. boards. Following are outputs from the R500:
  87. </p>
  88. <ul>
  89. <li>
  90. Lenovo BIOS 3.13 (EC firmware 1.06):
  91. <ul>
  92. <li><a href="hwdumps/r500/">hwdumps/r500/</a></li>
  93. </ul>
  94. </ul>
  95. </div>
  96. <div class="section">
  97. <h1 id="issues">Issues</h1>
  98. <h2>
  99. False report of overheating, automatic shut down
  100. </h2>
  101. <p>
  102. When attempting to boot Trisquel 7 live USB (GNOME), the following error appears and then
  103. the system abruptly shuts down:
  104. <b>thermal thermal_zone1: critical temperature reached(120 C),shutting down</b>.
  105. </p>
  106. <p>
  107. This is false. When booting with <b>acpi=off</b>, xsensors shows no overheating during a stress test.
  108. The system does not feel hot, nor does anything smell like it's burning.
  109. </p>
  110. <p>
  111. This is most likely caused by an ACPI bug in coreboot, which will have to be investigated. Grep for those things,
  112. comparing factory/libreboot (iasl -d or acpidump):
  113. </p>
  114. <pre>
  115. Return (C2K(\_SB.PCI0.LPCB.EC.TMP0))
  116. TMP0, 8, /* Thermal Zone 0 temperature */
  117. </pre>
  118. <h2>Cardbus slot didn't work when tested</h2>
  119. <p>
  120. Investigate.
  121. </p>
  122. </div>
  123. <div class="section">
  124. <h1>Descriptor differences</h1>
  125. <p>
  126. The <i>ich9gen</i> and <i>ich9deblob</i> utilities were modified,
  127. to reflect these differences.
  128. </p>
  129. <h2>Component 1 Density</h2>
  130. <pre>
  131. - descriptorStruct.componentSection.flcomp.component1Density = 0x4;
  132. + descriptorStruct.componentSection.flcomp.component1Density = 0x3;
  133. </pre>
  134. <p>
  135. Read page 848 in the ICH9 datasheet, linked to from <a href="gm45_remove_me.html#flash_descriptor_region">gm45_remove_me.html#flash_descriptor_region</a>.
  136. This doesn't break anything, but in the process of debugging descriptor differences on the R500, it was found that this
  137. config option isn't being modified in libreboot, for different size ROM images. 4MiB ROM images still contain 0x4 for component1Density.
  138. Per datasheets, 0x4 (100) is 8MiB, and 0x3 (011) is 4MiB. <b>This should be fixed!</b>
  139. </p>
  140. <p>
  141. It was 0x3 for this test, because the R500 that was used to create this report
  142. had a 4MiB SOIC-8 flash chip.
  143. </p>
  144. <h2>flReg1.LIMIT</h2>
  145. <pre>
  146. - /* descriptorStruct.regionSection.flReg1.LIMIT = 0x07ff; */
  147. + /* descriptorStruct.regionSection.flReg1.LIMIT = 0x03ff; */
  148. </pre>
  149. <p>
  150. Ignore this. This is not used at all, and is instead automatically set, depending on
  151. the targetted ROM image size, both in ich9gen and ich9deblob. 0x7ff means 8MiB, and 0x3ff means
  152. 4MiB. flReg1 is for the BIOS region. Simply speaking, this is defining the final 4KiB section
  153. of the ROM image, where the BIOS region ends.
  154. </p>
  155. <p>
  156. It was 0x3ff for this test, because the R500 that was used to create this report
  157. had a 4MiB SOIC-8 flash chip.
  158. </p>
  159. <h2>Onboard gigabit ethernet NIC is disabled</h2>
  160. <pre>
  161. - descriptorStruct.ichStraps.ichStrap0.integratedGbe = 0x1;
  162. - descriptorStruct.ichStraps.ichStrap0.lanPhy = 0x1;
  163. + descriptorStruct.ichStraps.ichStrap0.integratedGbe = 0x0;
  164. + descriptorStruct.ichStraps.ichStrap0.lanPhy = 0x0;
  165. </pre>
  166. <p>
  167. Most GM45 laptops (e.g. X200, T400, T500, R400) have the <b>Intel 82567LM</b>
  168. integrated gigabit NIC.
  169. </p>
  170. <p>
  171. On the R500, a <b>Broadcom BCM5787M</b> NIC is present. To make this work,
  172. the change above must be made for the R500 descriptor.
  173. </p>
  174. <h1 id="nogbe">No Gbe region!</h1>
  175. <p>
  176. Not shown in the diffs above:
  177. </p>
  178. <pre>
  179. Original: Descriptor start block: 00000000 ; Descriptor end block: 00000000
  180. Original: BIOS start block: 00200000 ; BIOS end block: 003ff000
  181. Original: ME start block: 00001000 ; ME end block: 001f7000
  182. Original: GBe start block: 00fff000 ; GBe end block: 00000000
  183. Original: Platform start block: 001f8000 ; Platform end block: 001ff000
  184. </pre>
  185. <p>
  186. As explained above, this laptop uses a Broadcom NIC, which means that
  187. the Gbe region does not and <i>should not</i> exist, since this is for the
  188. Intel NIC only.
  189. </p>
  190. <p>
  191. In the output above, Gbe starts at fff and ends at 000. Base 1FFF or FFF, and limit 0,
  192. means that the region is disabled.
  193. </p>
  194. <p>
  195. In the output above, the ME region is 4KiB larger than on other GM45 systems that have
  196. a Gbe region. This accounts for the lack of a Gbe region.
  197. </p>
  198. <p>
  199. As part of this effort, ich9gen/ich9deblob/demefactory will all be
  200. modified to account for the differences above.
  201. </p>
  202. </div>
  203. <div class="section">
  204. <p>
  205. Copyright &copy; 2015 Francis Rowe &lt;info@gluglug.org.uk&gt;<br/>
  206. Permission is granted to copy, distribute and/or modify this document
  207. under the terms of the GNU Free Documentation License, Version 1.3
  208. or any later version published by the Free Software Foundation;
  209. with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.
  210. A copy of the license can be found at <a href="../gfdl-1.3.txt">../gfdl-1.3.txt</a>
  211. </p>
  212. <p>
  213. Updated versions of the license (when available) can be found at
  214. <a href="https://www.gnu.org/licenses/licenses.html">https://www.gnu.org/licenses/licenses.html</a>
  215. </p>
  216. <p>
  217. UNLESS OTHERWISE SEPARATELY UNDERTAKEN BY THE LICENSOR, TO THE
  218. EXTENT POSSIBLE, THE LICENSOR OFFERS THE LICENSED MATERIAL AS-IS
  219. AND AS-AVAILABLE, AND MAKES NO REPRESENTATIONS OR WARRANTIES OF
  220. ANY KIND CONCERNING THE LICENSED MATERIAL, WHETHER EXPRESS,
  221. IMPLIED, STATUTORY, OR OTHER. THIS INCLUDES, WITHOUT LIMITATION,
  222. WARRANTIES OF TITLE, MERCHANTABILITY, FITNESS FOR A PARTICULAR
  223. PURPOSE, NON-INFRINGEMENT, ABSENCE OF LATENT OR OTHER DEFECTS,
  224. ACCURACY, OR THE PRESENCE OR ABSENCE OF ERRORS, WHETHER OR NOT
  225. KNOWN OR DISCOVERABLE. WHERE DISCLAIMERS OF WARRANTIES ARE NOT
  226. ALLOWED IN FULL OR IN PART, THIS DISCLAIMER MAY NOT APPLY TO YOU.
  227. </p>
  228. <p>
  229. TO THE EXTENT POSSIBLE, IN NO EVENT WILL THE LICENSOR BE LIABLE
  230. TO YOU ON ANY LEGAL THEORY (INCLUDING, WITHOUT LIMITATION,
  231. NEGLIGENCE) OR OTHERWISE FOR ANY DIRECT, SPECIAL, INDIRECT,
  232. INCIDENTAL, CONSEQUENTIAL, PUNITIVE, EXEMPLARY, OR OTHER LOSSES,
  233. COSTS, EXPENSES, OR DAMAGES ARISING OUT OF THIS PUBLIC LICENSE OR
  234. USE OF THE LICENSED MATERIAL, EVEN IF THE LICENSOR HAS BEEN
  235. ADVISED OF THE POSSIBILITY OF SUCH LOSSES, COSTS, EXPENSES, OR
  236. DAMAGES. WHERE A LIMITATION OF LIABILITY IS NOT ALLOWED IN FULL OR
  237. IN PART, THIS LIMITATION MAY NOT APPLY TO YOU.
  238. </p>
  239. <p>
  240. The disclaimer of warranties and limitation of liability provided
  241. above shall be interpreted in a manner that, to the extent
  242. possible, most closely approximates an absolute disclaimer and
  243. waiver of all liability.
  244. </p>
  245. </div>
  246. </body>
  247. </html>