aarch64: don't be so intent on running driver bringup on cpu0
This commit is contained in:
parent
a70b6e58f0
commit
ecbe7f6cbb
@ -119,8 +119,19 @@ int virtio_keyboard_responder(process_t * this, int irq, void * data) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void try_to_get_boot_processor(void) {
|
||||
/* We would prefer these virtio startup processes run on the boot CPU, but
|
||||
* it's not the end of the world if they don't. If we're not on the boot
|
||||
* CPU, yield for a bit to try to get on it... */
|
||||
uint64_t expire = arch_perf_timer() + 100000UL * arch_cpu_mhz();
|
||||
while (this_core->cpu_id != 0) {
|
||||
if (arch_perf_timer() >= expire) break;
|
||||
switch_task(1);
|
||||
}
|
||||
}
|
||||
|
||||
static void virtio_tablet_thread(void * data) {
|
||||
while (this_core->cpu_id != 0) switch_task(1);
|
||||
try_to_get_boot_processor();
|
||||
|
||||
uint32_t device = (uintptr_t)data;
|
||||
uintptr_t t = 0x12000000;
|
||||
@ -290,7 +301,7 @@ static const uint8_t ext_key_map[256] = {
|
||||
};
|
||||
|
||||
static void virtio_keyboard_thread(void * data) {
|
||||
while (this_core->cpu_id != 0) switch_task(1);
|
||||
try_to_get_boot_processor();
|
||||
|
||||
uint32_t device = (uintptr_t)data;
|
||||
uintptr_t t = 0x12100000;
|
||||
|
@ -504,7 +504,6 @@ static void e1000_init(struct e1000_nic * nic) {
|
||||
#endif
|
||||
|
||||
delay_yield(10000);
|
||||
while (this_core->cpu_id != 0) switch_task(1);
|
||||
|
||||
/* Is this size enough? */
|
||||
uint32_t initial_bar = pci_read_field(e1000_device_pci, PCI_BAR0, 4);
|
||||
|
Loading…
Reference in New Issue
Block a user