diff --git a/sys/src/9/pc/main.c b/sys/src/9/pc/main.c index 39649d164..f5937b6be 100644 --- a/sys/src/9/pc/main.c +++ b/sys/src/9/pc/main.c @@ -5,6 +5,7 @@ #include "dat.h" #include "fns.h" #include "io.h" +#include "../port/pci.h" #include "ureg.h" #include "pool.h" #include "rebootcode.i" @@ -689,5 +690,8 @@ reboot(void *entry, void *code, ulong size) /* shutdown devices */ chandevshutdown(); + /* disable pci devices */ + pcireset(); + rebootjump((ulong)entry & ~0xF0000000UL, PADDR(code), size); } diff --git a/sys/src/9/pc64/main.c b/sys/src/9/pc64/main.c index 53bcd8887..d440656fa 100644 --- a/sys/src/9/pc64/main.c +++ b/sys/src/9/pc64/main.c @@ -5,6 +5,7 @@ #include "dat.h" #include "fns.h" #include "io.h" +#include "../port/pci.h" #include "ureg.h" #include "pool.h" #include "rebootcode.i" @@ -286,6 +287,9 @@ reboot(void *entry, void *code, ulong size) /* shutdown devices */ chandevshutdown(); + /* disable pci devices */ + pcireset(); + rebootjump((uintptr)entry & (ulong)~0xF0000000UL, PADDR(code), size); }