* [PATCH v2 0/3] mini-os: some cleanups
@ 2016-08-29 6:17 Juergen Gross
2016-08-29 6:17 ` [PATCH v2 1/3] mini-os: cleanup x86_32.S Juergen Gross
` (3 more replies)
0 siblings, 4 replies; 7+ messages in thread
From: Juergen Gross @ 2016-08-29 6:17 UTC (permalink / raw)
To: minios-devel, xen-devel; +Cc: Juergen Gross, samuel.thibault, wei.liu2
Do some cleanups in Mini-OS.
V2: modified patch 2 as suggested by Andrew Cooper
Juergen Gross (3):
mini-os: cleanup x86_32.S
mini-os: cleanup x86_64.S
mini-os: remove unused functions from sched.c
arch/x86/x86_32.S | 7 +------
arch/x86/x86_64.S | 43 +++++++++++++++----------------------------
sched.c | 48 ------------------------------------------------
3 files changed, 16 insertions(+), 82 deletions(-)
--
2.6.6
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
https://lists.xen.org/xen-devel
^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH v2 1/3] mini-os: cleanup x86_32.S
2016-08-29 6:17 [PATCH v2 0/3] mini-os: some cleanups Juergen Gross
@ 2016-08-29 6:17 ` Juergen Gross
2016-08-29 6:17 ` [PATCH v2 2/3] mini-os: cleanup x86_64.S Juergen Gross
` (2 subsequent siblings)
3 siblings, 0 replies; 7+ messages in thread
From: Juergen Gross @ 2016-08-29 6:17 UTC (permalink / raw)
To: minios-devel, xen-devel; +Cc: Juergen Gross, samuel.thibault, wei.liu2
arch/x86/x86_32.S has some superfluous instructions. Remove them.
Signed-off-by: Juergen Gross <jgross@suse.com>
Reviewed-by: Samuel Thibault <samuel.thibault@ens-lyon.org>
---
arch/x86/x86_32.S | 7 +------
1 file changed, 1 insertion(+), 6 deletions(-)
diff --git a/arch/x86/x86_32.S b/arch/x86/x86_32.S
index f70fc65..3de0027 100644
--- a/arch/x86/x86_32.S
+++ b/arch/x86/x86_32.S
@@ -111,7 +111,6 @@ do_exception:
jmp ret_from_exception
ret_from_exception:
- movb CS(%esp),%cl
addl $8,%esp
RESTORE_ALL
@@ -140,11 +139,7 @@ ENTRY(hypervisor_callback)
call do_hypervisor_callback
add $4,%esp
movl HYPERVISOR_shared_info,%esi
- xorl %eax,%eax
- movb CS(%esp),%cl
- test $2,%cl # slow return to ring 2 or 3
- jne safesti
-safesti:movb $0,1(%esi) # reenable event callbacks
+ movb $0,1(%esi) # reenable event callbacks
scrit: /**** START OF CRITICAL REGION ****/
testb $0xFF,(%esi)
jnz 14f # process more events if necessary...
--
2.6.6
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
https://lists.xen.org/xen-devel
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH v2 2/3] mini-os: cleanup x86_64.S
2016-08-29 6:17 [PATCH v2 0/3] mini-os: some cleanups Juergen Gross
2016-08-29 6:17 ` [PATCH v2 1/3] mini-os: cleanup x86_32.S Juergen Gross
@ 2016-08-29 6:17 ` Juergen Gross
2016-08-29 8:51 ` Wei Liu
2016-08-29 6:17 ` [PATCH v2 3/3] mini-os: remove unused functions from sched.c Juergen Gross
2016-08-29 10:13 ` [PATCH v2 0/3] mini-os: some cleanups Wei Liu
3 siblings, 1 reply; 7+ messages in thread
From: Juergen Gross @ 2016-08-29 6:17 UTC (permalink / raw)
To: minios-devel, xen-devel; +Cc: Juergen Gross, samuel.thibault, wei.liu2
arch/x86/x86_64.S contains some unnecessary macros. Remove them.
Add a SAVE_PARAVIRT macro for saving %rcx and %r11 on the stack in
case of CONFIG_PARAVIRT defined.
Remove the parameter from HYPERVISOR_IRET macro as it is used with
0 only.
Signed-off-by: Juergen Gross <jgross@suse.com>
---
V2: modify SAVE_PARAVIRT as suggested by Andrew Cooper
---
arch/x86/x86_64.S | 43 +++++++++++++++----------------------------
1 file changed, 15 insertions(+), 28 deletions(-)
diff --git a/arch/x86/x86_64.S b/arch/x86/x86_64.S
index 2046187..7529c02 100644
--- a/arch/x86/x86_64.S
+++ b/arch/x86/x86_64.S
@@ -45,21 +45,10 @@ hypercall_page:
#define XEN_GET_VCPU_INFO(reg) movq HYPERVISOR_shared_info,reg
-#define XEN_PUT_VCPU_INFO(reg)
-#define XEN_PUT_VCPU_INFO_fixup
#define XEN_LOCKED_BLOCK_EVENTS(reg) movb $1,evtchn_upcall_mask(reg)
#define XEN_LOCKED_UNBLOCK_EVENTS(reg) movb $0,evtchn_upcall_mask(reg)
#define XEN_TEST_PENDING(reg) testb $0xFF,evtchn_upcall_pending(reg)
-#define XEN_BLOCK_EVENTS(reg) XEN_GET_VCPU_INFO(reg) ; \
- XEN_LOCKED_BLOCK_EVENTS(reg) ; \
- XEN_PUT_VCPU_INFO(reg)
-
-#define XEN_UNBLOCK_EVENTS(reg) XEN_GET_VCPU_INFO(reg) ; \
- XEN_LOCKED_UNBLOCK_EVENTS(reg) ; \
- XEN_PUT_VCPU_INFO(reg)
-
-
/* Offsets into shared_info_t. */
#define evtchn_upcall_pending /* 0 */
#define evtchn_upcall_mask 1
@@ -77,12 +66,15 @@ KERNEL_CS_MASK = 0xfc
/* Macros */
+.macro SAVE_PARAVIRT
+#ifdef CONFIG_PARAVIRT
+ pop %rcx
+ pop %r11 /* rsp points to the error code */
+#endif
+.endm
+
.macro zeroentry sym
-#ifdef CONFIG_PARAVIRT
- movq (%rsp),%rcx
- movq 8(%rsp),%r11
- addq $0x10,%rsp /* skip rcx and r11 */
-#endif
+ SAVE_PARAVIRT
pushq $0 /* push error code/oldrax */
pushq %rax /* push real oldrax to the rdi slot */
leaq \sym(%rip),%rax
@@ -90,11 +82,7 @@ KERNEL_CS_MASK = 0xfc
.endm
.macro errorentry sym
-#ifdef CONFIG_PARAVIRT
- movq (%rsp),%rcx
- movq 8(%rsp),%r11
- addq $0x10,%rsp /* rsp points to the error code */
-#endif
+ SAVE_PARAVIRT
pushq %rax
leaq \sym(%rip),%rax
jmp error_entry
@@ -141,7 +129,7 @@ KERNEL_CS_MASK = 0xfc
movq %rdi, RDI(%rsp) /* put rdi into the slot */
.endm
-.macro HYPERVISOR_IRET flag
+.macro HYPERVISOR_IRET
#ifdef CONFIG_PARAVIRT
testl $NMI_MASK,2*8(%rsp)
jnz 2f
@@ -155,7 +143,7 @@ KERNEL_CS_MASK = 0xfc
#ifdef CONFIG_PARAVIRT
2: /* Slow iret via hypervisor. */
andl $~NMI_MASK, 16(%rsp)
- pushq $\flag
+ pushq $0
jmp hypercall_page + (__HYPERVISOR_iret * 32)
#endif
.endm
@@ -207,17 +195,16 @@ error_exit:
andb evtchn_upcall_mask(%rsi),%al
andb $1,%al # EAX[0] == IRET_RFLAGS.IF & event_mask
jnz restore_all_enable_events # != 0 => enable event delivery
- XEN_PUT_VCPU_INFO(%rsi)
RESTORE_ALL
- HYPERVISOR_IRET 0
+ HYPERVISOR_IRET
restore_all_enable_events:
RESTORE_ALL
pushq %rax # save rax for it will be clobbered later
RSP_OFFSET=8 # record the stack frame layout changes
XEN_GET_VCPU_INFO(%rax) # safe to use rax since it is saved
- XEN_UNBLOCK_EVENTS(%rax)
+ XEN_LOCKED_UNBLOCK_EVENTS(%rax)
scrit: /**** START OF CRITICAL REGION ****/
XEN_TEST_PENDING(%rax)
@@ -229,7 +216,7 @@ scrit: /**** START OF CRITICAL REGION ****/
restore_end:
jnz hypervisor_prologue # safe to jump out of critical region
# because events are masked if ZF = 0
- HYPERVISOR_IRET 0
+ HYPERVISOR_IRET
ecrit: /**** END OF CRITICAL REGION ****/
# Set up the stack as Xen does before calling event callback
@@ -278,7 +265,7 @@ critical_region_fixup:
#else
error_exit:
RESTORE_ALL
- HYPERVISOR_IRET 0
+ HYPERVISOR_IRET
/*
* Xen event (virtual interrupt) entry point.
--
2.6.6
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
https://lists.xen.org/xen-devel
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH v2 3/3] mini-os: remove unused functions from sched.c
2016-08-29 6:17 [PATCH v2 0/3] mini-os: some cleanups Juergen Gross
2016-08-29 6:17 ` [PATCH v2 1/3] mini-os: cleanup x86_32.S Juergen Gross
2016-08-29 6:17 ` [PATCH v2 2/3] mini-os: cleanup x86_64.S Juergen Gross
@ 2016-08-29 6:17 ` Juergen Gross
2016-08-29 10:13 ` [PATCH v2 0/3] mini-os: some cleanups Wei Liu
3 siblings, 0 replies; 7+ messages in thread
From: Juergen Gross @ 2016-08-29 6:17 UTC (permalink / raw)
To: minios-devel, xen-devel; +Cc: Juergen Gross, samuel.thibault, wei.liu2
sched.c contains some functions nobody is using. Remove them.
Signed-off-by: Juergen Gross <jgross@suse.com>
Reviewed-by: Samuel Thibault <samuel.thibault@ens-lyon.org>
---
sched.c | 48 ------------------------------------------------
1 file changed, 48 deletions(-)
diff --git a/sched.c b/sched.c
index 1e843d9..6f89ea4 100644
--- a/sched.c
+++ b/sched.c
@@ -63,16 +63,6 @@ static int threads_started;
struct thread *main_thread;
-void inline print_runqueue(void)
-{
- struct thread *th;
- MINIOS_TAILQ_FOREACH(th, &thread_list, thread_list)
- {
- printk(" Thread \"%s\", runnable=%d\n", th->name, is_runnable(th));
- }
- printk("\n");
-}
-
void schedule(void)
{
struct thread *prev, *next, *thread, *tmp;
@@ -245,44 +235,6 @@ void idle_thread_fn(void *unused)
}
}
-DECLARE_MUTEX(mutex);
-
-void th_f1(void *data)
-{
- struct timeval tv1, tv2;
-
- for(;;)
- {
- down(&mutex);
- printk("Thread \"%s\" got semaphore, runnable %d\n", current->name, is_runnable(current));
- schedule();
- printk("Thread \"%s\" releases the semaphore\n", current->name);
- up(&mutex);
-
-
- gettimeofday(&tv1, NULL);
- for(;;)
- {
- gettimeofday(&tv2, NULL);
- if(tv2.tv_sec - tv1.tv_sec > 2) break;
- }
-
-
- schedule();
- }
-}
-
-void th_f2(void *data)
-{
- for(;;)
- {
- printk("Thread OTHER executing, data 0x%p\n", data);
- schedule();
- }
-}
-
-
-
void init_sched(void)
{
printk("Initialising scheduler\n");
--
2.6.6
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
https://lists.xen.org/xen-devel
^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH v2 2/3] mini-os: cleanup x86_64.S
2016-08-29 6:17 ` [PATCH v2 2/3] mini-os: cleanup x86_64.S Juergen Gross
@ 2016-08-29 8:51 ` Wei Liu
2016-08-29 9:24 ` Samuel Thibault
0 siblings, 1 reply; 7+ messages in thread
From: Wei Liu @ 2016-08-29 8:51 UTC (permalink / raw)
To: Juergen Gross; +Cc: minios-devel, xen-devel, wei.liu2, samuel.thibault
On Mon, Aug 29, 2016 at 08:17:21AM +0200, Juergen Gross wrote:
> arch/x86/x86_64.S contains some unnecessary macros. Remove them.
>
> Add a SAVE_PARAVIRT macro for saving %rcx and %r11 on the stack in
> case of CONFIG_PARAVIRT defined.
>
> Remove the parameter from HYPERVISOR_IRET macro as it is used with
> 0 only.
>
> Signed-off-by: Juergen Gross <jgross@suse.com>
Reviewed-by: Wei Liu <wei.liu2@citrix.com>
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
https://lists.xen.org/xen-devel
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH v2 2/3] mini-os: cleanup x86_64.S
2016-08-29 8:51 ` Wei Liu
@ 2016-08-29 9:24 ` Samuel Thibault
0 siblings, 0 replies; 7+ messages in thread
From: Samuel Thibault @ 2016-08-29 9:24 UTC (permalink / raw)
To: Wei Liu; +Cc: Juergen Gross, minios-devel, xen-devel
Wei Liu, on Mon 29 Aug 2016 09:51:52 +0100, wrote:
> On Mon, Aug 29, 2016 at 08:17:21AM +0200, Juergen Gross wrote:
> > arch/x86/x86_64.S contains some unnecessary macros. Remove them.
> >
> > Add a SAVE_PARAVIRT macro for saving %rcx and %r11 on the stack in
> > case of CONFIG_PARAVIRT defined.
> >
> > Remove the parameter from HYPERVISOR_IRET macro as it is used with
> > 0 only.
> >
> > Signed-off-by: Juergen Gross <jgross@suse.com>
>
> Reviewed-by: Wei Liu <wei.liu2@citrix.com>
Acked-by: Samuel Thibault <samuel.thibault@ens-lyon.org>
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
https://lists.xen.org/xen-devel
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH v2 0/3] mini-os: some cleanups
2016-08-29 6:17 [PATCH v2 0/3] mini-os: some cleanups Juergen Gross
` (2 preceding siblings ...)
2016-08-29 6:17 ` [PATCH v2 3/3] mini-os: remove unused functions from sched.c Juergen Gross
@ 2016-08-29 10:13 ` Wei Liu
3 siblings, 0 replies; 7+ messages in thread
From: Wei Liu @ 2016-08-29 10:13 UTC (permalink / raw)
To: Juergen Gross; +Cc: minios-devel, xen-devel, wei.liu2, samuel.thibault
On Mon, Aug 29, 2016 at 08:17:19AM +0200, Juergen Gross wrote:
> Do some cleanups in Mini-OS.
>
> V2: modified patch 2 as suggested by Andrew Cooper
>
> Juergen Gross (3):
> mini-os: cleanup x86_32.S
> mini-os: cleanup x86_64.S
> mini-os: remove unused functions from sched.c
>
> arch/x86/x86_32.S | 7 +------
> arch/x86/x86_64.S | 43 +++++++++++++++----------------------------
> sched.c | 48 ------------------------------------------------
> 3 files changed, 16 insertions(+), 82 deletions(-)
>
Pushed.
> --
> 2.6.6
>
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
https://lists.xen.org/xen-devel
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2016-08-29 10:13 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-08-29 6:17 [PATCH v2 0/3] mini-os: some cleanups Juergen Gross
2016-08-29 6:17 ` [PATCH v2 1/3] mini-os: cleanup x86_32.S Juergen Gross
2016-08-29 6:17 ` [PATCH v2 2/3] mini-os: cleanup x86_64.S Juergen Gross
2016-08-29 8:51 ` Wei Liu
2016-08-29 9:24 ` Samuel Thibault
2016-08-29 6:17 ` [PATCH v2 3/3] mini-os: remove unused functions from sched.c Juergen Gross
2016-08-29 10:13 ` [PATCH v2 0/3] mini-os: some cleanups Wei Liu
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.