Displaying 20 results from an estimated 52 matches for "paravirt_patch_call".
2018 Aug 10
0
[PATCH 01/10] x86/paravirt: make paravirt_patch_call() and paravirt_patch_jmp() static
paravirt_patch_call() and paravirt_patch_jmp() are used in paravirt.c
only. Convert them to static.
Signed-off-by: Juergen Gross <jgross at suse.com>
---
arch/x86/include/asm/paravirt_types.h | 6 ------
arch/x86/kernel/paravirt.c | 12 ++++++------
2 files changed, 6 insertions(+), 12 deletions(-)...
2018 Aug 13
0
[PATCH v2 01/11] x86/paravirt: make paravirt_patch_call() and paravirt_patch_jmp() static
paravirt_patch_call() and paravirt_patch_jmp() are used in paravirt.c
only. Convert them to static.
Signed-off-by: Juergen Gross <jgross at suse.com>
---
arch/x86/include/asm/paravirt_types.h | 6 ------
arch/x86/kernel/paravirt.c | 12 ++++++------
2 files changed, 6 insertions(+), 12 deletions(-)...
2015 Mar 19
2
[PATCH 9/9] qspinlock, x86, kvm: Implement KVM support for paravirt qspinlock
...is calling a certain
spin_unlock call site while it is being patched by another one with the
alternative() function call.
So far, I don't see any problem with bare metal where
paravirt_patch_insns() is used to patch it to the move instruction.
However, in a virtual guest enivornment where paravirt_patch_call() was
used, there were situations where the system panic because of page fault
on some invalid memory in the kthread. If you look at the
paravirt_patch_call(), you will see:
:
b->opcode = 0xe8; /* call */
b->delta = delta;
If another CPU reads the instruction at the call site at the...
2015 Mar 19
2
[PATCH 9/9] qspinlock, x86, kvm: Implement KVM support for paravirt qspinlock
...is calling a certain
spin_unlock call site while it is being patched by another one with the
alternative() function call.
So far, I don't see any problem with bare metal where
paravirt_patch_insns() is used to patch it to the move instruction.
However, in a virtual guest enivornment where paravirt_patch_call() was
used, there were situations where the system panic because of page fault
on some invalid memory in the kthread. If you look at the
paravirt_patch_call(), you will see:
:
b->opcode = 0xe8; /* call */
b->delta = delta;
If another CPU reads the instruction at the call site at the...
2018 Aug 13
0
[PATCH v2 02/11] x86/paravirt: remove clobbers parameter from paravirt patch functions
...BUG_ON(used > p->len);
diff --git a/arch/x86/kernel/paravirt.c b/arch/x86/kernel/paravirt.c
index ce560b916b1f..f0c462fe2808 100644
--- a/arch/x86/kernel/paravirt.c
+++ b/arch/x86/kernel/paravirt.c
@@ -80,10 +80,8 @@ struct branch {
u32 delta;
} __attribute__((packed));
-static unsigned paravirt_patch_call(void *insnbuf,
- const void *target, u16 tgt_clobbers,
- unsigned long addr, u16 site_clobbers,
- unsigned len)
+static unsigned paravirt_patch_call(void *insnbuf, const void *target,
+ unsigned long addr, unsigned len)
{
struct branch *b = insnbuf;
unsigned long de...
2015 Mar 19
0
[PATCH 9/9] qspinlock,x86,kvm: Implement KVM support for paravirt qspinlock
...spin_unlock call site while it is being patched by another one with the
> alternative() function call.
>
> So far, I don't see any problem with bare metal where paravirt_patch_insns()
> is used to patch it to the move instruction. However, in a virtual guest
> enivornment where paravirt_patch_call() was used, there were situations
> where the system panic because of page fault on some invalid memory in the
> kthread. If you look at the paravirt_patch_call(), you will see:
>
> :
> b->opcode = 0xe8; /* call */
> b->delta = delta;
>
> If another CPU reads the...
2015 Mar 19
1
[PATCH 9/9] qspinlock, x86, kvm: Implement KVM support for paravirt qspinlock
...ite while it is being patched by another one with the
>> alternative() function call.
>>
>> So far, I don't see any problem with bare metal where paravirt_patch_insns()
>> is used to patch it to the move instruction. However, in a virtual guest
>> enivornment where paravirt_patch_call() was used, there were situations
>> where the system panic because of page fault on some invalid memory in the
>> kthread. If you look at the paravirt_patch_call(), you will see:
>>
>> :
>> b->opcode = 0xe8; /* call */
>> b->delta = delta;
>>
&g...
2015 Mar 19
0
[PATCH 9/9] qspinlock,x86,kvm: Implement KVM support for paravirt qspinlock
...spin_unlock call site while it is being patched by another one with the
> alternative() function call.
>
> So far, I don't see any problem with bare metal where paravirt_patch_insns()
> is used to patch it to the move instruction. However, in a virtual guest
> enivornment where paravirt_patch_call() was used, there were situations
> where the system panic because of page fault on some invalid memory in the
> kthread. If you look at the paravirt_patch_call(), you will see:
>
> :
> b->opcode = 0xe8; /* call */
> b->delta = delta;
>
> If another CPU reads the...
2015 Mar 19
1
[PATCH 9/9] qspinlock, x86, kvm: Implement KVM support for paravirt qspinlock
...ite while it is being patched by another one with the
>> alternative() function call.
>>
>> So far, I don't see any problem with bare metal where paravirt_patch_insns()
>> is used to patch it to the move instruction. However, in a virtual guest
>> enivornment where paravirt_patch_call() was used, there were situations
>> where the system panic because of page fault on some invalid memory in the
>> kthread. If you look at the paravirt_patch_call(), you will see:
>>
>> :
>> b->opcode = 0xe8; /* call */
>> b->delta = delta;
>>
&g...
2023 Jun 08
3
[RFC PATCH 0/3] x86/paravirt: Get rid of paravirt patching
This is a small series getting rid of paravirt patching by switching
completely to alternative patching for the same functionality.
The basic idea is to add the capability to switch from indirect to
direct calls via a special alternative patching option.
This removes _some_ of the paravirt macro maze, but most of it needs
to stay due to the need of hiding the call instructions from the
compiler
2023 Jun 08
3
[RFC PATCH 0/3] x86/paravirt: Get rid of paravirt patching
This is a small series getting rid of paravirt patching by switching
completely to alternative patching for the same functionality.
The basic idea is to add the capability to switch from indirect to
direct calls via a special alternative patching option.
This removes _some_ of the paravirt macro maze, but most of it needs
to stay due to the need of hiding the call instructions from the
compiler
2015 Nov 03
1
[RFC PATCH] x86/paravirt: Kill some unused patching functions
...uot;start_", ops, name) code NATIVE_LABEL("end_", ops, name))
-unsigned paravirt_patch_nop(void);
unsigned paravirt_patch_ident_32(void *insnbuf, unsigned len);
unsigned paravirt_patch_ident_64(void *insnbuf, unsigned len);
-unsigned paravirt_patch_ignore(unsigned len);
unsigned paravirt_patch_call(void *insnbuf,
const void *target, u16 tgt_clobbers,
unsigned long addr, u16 site_clobbers,
diff --git a/arch/x86/kernel/paravirt.c b/arch/x86/kernel/paravirt.c
index c2130aef3f9d..4f32a10979db 100644
--- a/arch/x86/kernel/paravirt.c
+++ b/arch/x86/kernel/paravirt.c
@@ -74,16 +74,...
2015 Nov 03
1
[RFC PATCH] x86/paravirt: Kill some unused patching functions
...uot;start_", ops, name) code NATIVE_LABEL("end_", ops, name))
-unsigned paravirt_patch_nop(void);
unsigned paravirt_patch_ident_32(void *insnbuf, unsigned len);
unsigned paravirt_patch_ident_64(void *insnbuf, unsigned len);
-unsigned paravirt_patch_ignore(unsigned len);
unsigned paravirt_patch_call(void *insnbuf,
const void *target, u16 tgt_clobbers,
unsigned long addr, u16 site_clobbers,
diff --git a/arch/x86/kernel/paravirt.c b/arch/x86/kernel/paravirt.c
index c2130aef3f9d..4f32a10979db 100644
--- a/arch/x86/kernel/paravirt.c
+++ b/arch/x86/kernel/paravirt.c
@@ -74,16 +74,...
2007 Jul 24
1
lguest doesn't work on kernel 2.6.23-rc1
...107d9f c04b8f58 c04bf2f0 c04abee0 00000=
000 =
c0107df2 00000006 00010202 c0491ff0 c04975fa c04ac2a0 c0492aba 00000=
080 =
Call Trace:
[<c0107ca2>] text_poke+0x22/0xd0
[<c010fc1e>] lookup_address+0x1e/0x70
[<c010fc23>] lookup_address+0x23/0x70
[<c010e474>] paravirt_patch_call+0x44/0x60
[<c010fc24>] lookup_address+0x24/0x70
[<c0107d9f>] nop_out+0x4f/0x60
[<c0107df2>] apply_paravirt+0x42/0x50
[<c04975fa>] alternative_instructions+0x3a/0x50
[<c0492aba>] start_kernel+0x21a/0x2b0
[<c0492370>] unknown_bootoption+0x0/0x1e0
[<...
2007 Jul 24
1
lguest doesn't work on kernel 2.6.23-rc1
...107d9f c04b8f58 c04bf2f0 c04abee0 00000=
000 =
c0107df2 00000006 00010202 c0491ff0 c04975fa c04ac2a0 c0492aba 00000=
080 =
Call Trace:
[<c0107ca2>] text_poke+0x22/0xd0
[<c010fc1e>] lookup_address+0x1e/0x70
[<c010fc23>] lookup_address+0x23/0x70
[<c010e474>] paravirt_patch_call+0x44/0x60
[<c010fc24>] lookup_address+0x24/0x70
[<c0107d9f>] nop_out+0x4f/0x60
[<c0107df2>] apply_paravirt+0x42/0x50
[<c04975fa>] alternative_instructions+0x3a/0x50
[<c0492aba>] start_kernel+0x21a/0x2b0
[<c0492370>] unknown_bootoption+0x0/0x1e0
[<...
2018 Aug 10
13
[PATCH 00/10] x86/paravirt: several cleanups
...ns for paravirt guests") is a prerequisite
for this series.
The last 4 patches of this series require my Xen cleanup series
https://lore.kernel.org/lkml/20180717120113.12756-1-jgross at suse.com/
which hides more Xen PV-only code behind CONFIG_XEN_PV.
Juergen Gross (10):
x86/paravirt: make paravirt_patch_call() and paravirt_patch_jmp()
static
x86/paravirt: remove clobbers parameter from paravirt patch functions
x86/paravirt: remove clobbers from struct paravirt_patch_site
x86/paravirt: use a single ops structure
x86/paravirt: remove unused paravirt bits
x86/paravirt: introduce new config o...
2018 Sep 19
1
[PATCH] x86/paravirt: fix some warning messages
...r paravirt guests")
Signed-off-by: Dan Carpenter <dan.carpenter at oracle.com>
diff --git a/arch/x86/kernel/paravirt.c b/arch/x86/kernel/paravirt.c
index bbf006fe78d7..e4d4df37922a 100644
--- a/arch/x86/kernel/paravirt.c
+++ b/arch/x86/kernel/paravirt.c
@@ -89,7 +89,7 @@ static unsigned paravirt_patch_call(void *insnbuf, const void *target,
if (len < 5) {
#ifdef CONFIG_RETPOLINE
- WARN_ONCE("Failing to patch indirect CALL in %ps\n", (void *)addr);
+ WARN_ONCE(1, "Failing to patch indirect CALL in %ps\n", (void *)addr);
#endif
return len; /* call too long for patch si...
2018 Nov 02
0
[PATCH 4.18 073/150] x86/paravirt: Fix some warning messages
...rg>
---
arch/x86/kernel/paravirt.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/arch/x86/kernel/paravirt.c b/arch/x86/kernel/paravirt.c
index 930c88341e4e..1fbf38dde84c 100644
--- a/arch/x86/kernel/paravirt.c
+++ b/arch/x86/kernel/paravirt.c
@@ -90,7 +90,7 @@ unsigned paravirt_patch_call(void *insnbuf,
if (len < 5) {
#ifdef CONFIG_RETPOLINE
- WARN_ONCE("Failing to patch indirect CALL in %ps\n", (void *)addr);
+ WARN_ONCE(1, "Failing to patch indirect CALL in %ps\n", (void *)addr);
#endif
return len; /* call too long for patch site */
}
@@ -110,7...
2018 Nov 02
0
[PATCH 4.14 091/143] x86/paravirt: Fix some warning messages
...rg>
---
arch/x86/kernel/paravirt.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/arch/x86/kernel/paravirt.c b/arch/x86/kernel/paravirt.c
index f3559b84cd75..04da826381c9 100644
--- a/arch/x86/kernel/paravirt.c
+++ b/arch/x86/kernel/paravirt.c
@@ -90,7 +90,7 @@ unsigned paravirt_patch_call(void *insnbuf,
if (len < 5) {
#ifdef CONFIG_RETPOLINE
- WARN_ONCE("Failing to patch indirect CALL in %ps\n", (void *)addr);
+ WARN_ONCE(1, "Failing to patch indirect CALL in %ps\n", (void *)addr);
#endif
return len; /* call too long for patch site */
}
@@ -110,7...
2018 Nov 08
0
[PATCH 4.9 121/171] x86/paravirt: Fix some warning messages
...rg>
---
arch/x86/kernel/paravirt.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/arch/x86/kernel/paravirt.c b/arch/x86/kernel/paravirt.c
index 29d465627919..bf9552bebb3c 100644
--- a/arch/x86/kernel/paravirt.c
+++ b/arch/x86/kernel/paravirt.c
@@ -90,7 +90,7 @@ unsigned paravirt_patch_call(void *insnbuf,
if (len < 5) {
#ifdef CONFIG_RETPOLINE
- WARN_ONCE("Failing to patch indirect CALL in %ps\n", (void *)addr);
+ WARN_ONCE(1, "Failing to patch indirect CALL in %ps\n", (void *)addr);
#endif
return len; /* call too long for patch site */
}
@@ -110,7...