-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
um: Implement ndelay/udelay in time-travel mode
In external or inf-cpu time-travel mode, ndelay/udelay currently just waste CPU time since the simulation time doesn't advance. Implement them properly in this case. Note that the "if (time_travel_mode == ...)" parts compile out if CONFIG_UML_TIME_TRAVEL_SUPPORT isn't set, time_travel_mode is defined to TT_MODE_OFF in that case. Signed-off-by: Johannes Berg <johannes.berg@intel.com> Signed-off-by: Richard Weinberger <richard@nod.at>
- Loading branch information
Johannes Berg
authored and
Richard Weinberger
committed
Mar 29, 2020
1 parent
88ce642
commit 0bc8fb4
Showing
4 changed files
with
42 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,30 @@ | ||
/* SPDX-License-Identifier: GPL-2.0 */ | ||
#ifndef __UM_DELAY_H | ||
#define __UM_DELAY_H | ||
#include <asm-generic/delay.h> | ||
#include <linux/time-internal.h> | ||
|
||
static inline void um_ndelay(unsigned long nsecs) | ||
{ | ||
if (time_travel_mode == TT_MODE_INFCPU || | ||
time_travel_mode == TT_MODE_EXTERNAL) { | ||
time_travel_ndelay(nsecs); | ||
return; | ||
} | ||
ndelay(nsecs); | ||
} | ||
#undef ndelay | ||
#define ndelay um_ndelay | ||
|
||
static inline void um_udelay(unsigned long usecs) | ||
{ | ||
if (time_travel_mode == TT_MODE_INFCPU || | ||
time_travel_mode == TT_MODE_EXTERNAL) { | ||
time_travel_ndelay(1000 * usecs); | ||
return; | ||
} | ||
udelay(usecs); | ||
} | ||
#undef udelay | ||
#define udelay um_udelay | ||
#endif /* __UM_DELAY_H */ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters