Lines 15-23
void acpi_reboot(void)
Link Here
|
15 |
|
15 |
|
16 |
rr = &acpi_gbl_FADT.reset_register; |
16 |
rr = &acpi_gbl_FADT.reset_register; |
17 |
|
17 |
|
18 |
/* Is the reset register supported? */ |
18 |
/* |
19 |
if (!(acpi_gbl_FADT.flags & ACPI_FADT_RESET_REGISTER) || |
19 |
* Is the reset register supported? |
20 |
rr->bit_width != 8 || rr->bit_offset != 0) |
20 |
* According to ACPI 3.0 spec the RESET_REG_SUP bit of FADT flag |
|
|
21 |
* indicates whether the acpi reboot is supported. On some |
22 |
* boxes this bit is zero. But there exists the definition of |
23 |
* ACPI_RESET_REG & RESET_VALUE. |
24 |
* And on such boxes the system can be rebooted only by using ACPI |
25 |
* reboot after the cycle of suspend/resume. |
26 |
* So in such case it is unnecessary to check the flag bit any more. |
27 |
* When acpi reboot is expected, only the reset_register is checked. |
28 |
* If the following conditions are meeted, it indicates that the reset |
29 |
* register is supported. Otherwise it means that reset register is |
30 |
* unsupported. |
31 |
* a. reset_register is not zero |
32 |
* b. the access width is eight |
33 |
* c. the bit_offset is zero |
34 |
*/ |
35 |
if (!(rr->address) || rr->bit_width != 8 || rr->bit_offset != 0) |
21 |
return; |
36 |
return; |
22 |
|
37 |
|
23 |
reset_value = acpi_gbl_FADT.reset_value; |
38 |
reset_value = acpi_gbl_FADT.reset_value; |