Re: [RFC 0/4] KVM in-kernel PM Timer implementation

2010-12-15 Thread Avi Kivity
On 12/14/2010 06:04 PM, Anthony Liguori wrote: On 12/14/2010 09:38 AM, Avi Kivity wrote: Fortunately, we have a very good bytecode interpreter that's accelerated in the kernel called KVM ;-) We have exactly the same bytecode interpreter under a different name, it's called userspace. If you

Re: [PATCH v3 2/4] genirq: Inform handler about line sharing state

2010-12-15 Thread Jan Kiszka
Am 15.12.2010 09:05, Thomas Gleixner wrote: On Wed, 15 Dec 2010, Jan Kiszka wrote: Am 14.12.2010 22:46, Thomas Gleixner wrote: On Mon, 13 Dec 2010, Jan Kiszka wrote: From: Jan Kiszka jan.kis...@siemens.com chip_bus_lock(desc); retval = __setup_irq(irq, desc, action);

[PATCH v3] qemu,qmp: convert do_inject_nmi() to QObject, QError

2010-12-15 Thread Lai Jiangshan
Convert do_inject_nmi() to QObject, QError, we need to use it(via libvirt). changed from v1 Add document. Add error handling when the cpu index is invalid. changed from v2 use QERR_INVALID_PARAMETER_VALUE as Markus suggest. Signed-off-by: Lai Jiangshan la...@cn.fujitsu.com --- diff --git

Re: [PATCH v3 2/4] genirq: Inform handler about line sharing state

2010-12-15 Thread Thomas Gleixner
On Wed, 15 Dec 2010, Jan Kiszka wrote: Am 15.12.2010 09:05, Thomas Gleixner wrote: On Wed, 15 Dec 2010, Jan Kiszka wrote: Am 14.12.2010 22:46, Thomas Gleixner wrote: On Mon, 13 Dec 2010, Jan Kiszka wrote: From: Jan Kiszka jan.kis...@siemens.com chip_bus_lock(desc);

Re: [PATCH 4/5] pci-assign: Convert need_emulate_cmd into a bitmask

2010-12-15 Thread Michael S. Tsirkin
On Mon, Dec 13, 2010 at 04:56:29PM -0700, Alex Williamson wrote: On Tue, 2010-12-14 at 00:25 +0100, Jan Kiszka wrote: From: Jan Kiszka jan.kis...@siemens.com Define a mask of PCI command register bits that need to be emulated, i.e. read back from their shadow state. We will need this for

Re: AW: Freezing Windows 2008 x64bit guest

2010-12-15 Thread Vadim Rozenfeld
On Wed, 2010-12-15 at 00:57 +0100, Manfred Heubach wrote: Vadim Rozenfeld vrozenfe at redhat.com writes: On Mon, 2010-12-13 at 22:12 +0200, Dor Laor wrote: On 12/13/2010 09:42 PM, Manfred Heubach wrote: I was running the host with Ubuntu 10.04 but upgraded to 10.10 - mainly

Re: [Qemu-devel] [PATCH v3] qemu, qmp: convert do_inject_nmi() to QObject, QError

2010-12-15 Thread Markus Armbruster
Lai Jiangshan la...@cn.fujitsu.com writes: Convert do_inject_nmi() to QObject, QError, we need to use it(via libvirt). changed from v1 Add document. Add error handling when the cpu index is invalid. changed from v2 use QERR_INVALID_PARAMETER_VALUE as Markus suggest. Signed-off-by: Lai

Re: [RFC 0/4] KVM in-kernel PM Timer implementation

2010-12-15 Thread Ulrich Obergfell
- Anthony Liguori anth...@codemonkey.ws wrote: On 12/14/2010 06:09 AM, Ulrich Obergfell wrote: [...] Parts 1 thru 4 of this RFC contain experimental source code which I recently used to investigate the performance benefit. In a Linux guest, I was running a program that calls

Re: [PATCH v3 2/4] genirq: Inform handler about line sharing state

2010-12-15 Thread Thomas Gleixner
On Wed, 15 Dec 2010, Jan Kiszka wrote: Am 14.12.2010 21:54, Thomas Gleixner wrote: On Mon, 13 Dec 2010, Jan Kiszka wrote: @@ -943,6 +950,9 @@ static struct irqaction *__free_irq(unsigned int irq, void *dev_id) /* Make sure it's not being used on another CPU: */

Re: [PATCH 02/28] nVMX: Add VMX and SVM to list of supported cpuid features

2010-12-15 Thread Nadav Har'El
On Thu, Dec 09, 2010, Joerg Roedel wrote about Re: [PATCH 02/28] nVMX: Add VMX and SVM to list of supported cpuid features: This patch should be the last one in your series because VMX should be fully supported before it is reported to userspace. Joerg Thanks, good idea - especially

Re: [PATCH v3 2/4] genirq: Inform handler about line sharing state

2010-12-15 Thread Jan Kiszka
Am 15.12.2010 14:04, Thomas Gleixner wrote: On Wed, 15 Dec 2010, Jan Kiszka wrote: Am 14.12.2010 21:54, Thomas Gleixner wrote: On Mon, 13 Dec 2010, Jan Kiszka wrote: @@ -943,6 +950,9 @@ static struct irqaction *__free_irq(unsigned int irq, void *dev_id) /* Make sure it's not being used

Re: [PATCH v3 2/4] genirq: Inform handler about line sharing state

2010-12-15 Thread Thomas Gleixner
On Wed, 15 Dec 2010, Jan Kiszka wrote: Am 15.12.2010 14:04, Thomas Gleixner wrote: On Wed, 15 Dec 2010, Jan Kiszka wrote: Am 14.12.2010 21:54, Thomas Gleixner wrote: On Mon, 13 Dec 2010, Jan Kiszka wrote: @@ -943,6 +950,9 @@ static struct irqaction *__free_irq(unsigned int irq, void

Re: [PATCH v3 2/4] genirq: Inform handler about line sharing state

2010-12-15 Thread Thomas Gleixner
On Wed, 15 Dec 2010, Jan Kiszka wrote: Am 15.12.2010 14:04, Thomas Gleixner wrote: On Wed, 15 Dec 2010, Jan Kiszka wrote: Am 14.12.2010 21:54, Thomas Gleixner wrote: On Mon, 13 Dec 2010, Jan Kiszka wrote: @@ -943,6 +950,9 @@ static struct irqaction *__free_irq(unsigned int irq, void

Re: [PATCH v3 2/4] genirq: Inform handler about line sharing state

2010-12-15 Thread Jan Kiszka
Am 15.12.2010 16:41, Thomas Gleixner wrote: On Wed, 15 Dec 2010, Jan Kiszka wrote: Am 15.12.2010 14:04, Thomas Gleixner wrote: On Wed, 15 Dec 2010, Jan Kiszka wrote: Am 14.12.2010 21:54, Thomas Gleixner wrote: On Mon, 13 Dec 2010, Jan Kiszka wrote: @@ -943,6 +950,9 @@ static struct

[PATCH] qemu-kvm: Switch to upstream -enable-kvm semantics

2010-12-15 Thread Markus Armbruster
We currently enable KVM by default, and when it's not available, we print a message and fall back to TCG. Option -enable-kvm is ignored. Option -no-kvm suppresses KVM. Upstream works differently: KVM is off by default, -enable-kvm switches it on. -enable-kvm terminates the process

Re: [PATCH v3 2/4] genirq: Inform handler about line sharing state

2010-12-15 Thread Thomas Gleixner
On Wed, 15 Dec 2010, Jan Kiszka wrote: Am 15.12.2010 16:41, Thomas Gleixner wrote: Talking about headache. Your solution above does not prevent that scenario. CPU 0 CPU 1 synchronize_irq(); hard irq comes in sees shared and

[PATCH kvm-unit-tests v2 00/14] API test framework

2010-12-15 Thread Avi Kivity
This patchset adds an API test framework. Rather than driving kvm from qemu, we now have a way of calling the kvm API directly and observing the results. We can switch to guest mode and back at will and see any micro effects such as the result of executing particular instructions. A first test

[PATCH kvm-unit-tests v2 01/14] Makefile: add support for C++

2010-12-15 Thread Avi Kivity
Signed-off-by: Avi Kivity a...@redhat.com --- Makefile |4 +++- 1 files changed, 3 insertions(+), 1 deletions(-) diff --git a/Makefile b/Makefile index d25e6f2..9b0256d 100644 --- a/Makefile +++ b/Makefile @@ -30,11 +30,13 @@ CFLAGS += -O1 CFLAGS += $(autodepend-flags) -g

[PATCH kvm-unit-tests v2 03/14] Add exception class for kernel errors (errno)

2010-12-15 Thread Avi Kivity
Signed-off-by: Avi Kivity a...@redhat.com --- api/exception.cc | 20 api/exception.hh | 16 2 files changed, 36 insertions(+), 0 deletions(-) create mode 100644 api/exception.cc create mode 100644 api/exception.hh diff --git a/api/exception.cc

[PATCH kvm-unit-tests v2 06/14] Add support for calling a function in guest mode

2010-12-15 Thread Avi Kivity
This patch provides a way to establish an identity guest which has a 1:1 gva-hva translation. This allows the host to switch to guest mode, call a function in the same address space, and return. Because long mode virtual addresses are 47 bits long, and some hosts have smaller physical addresses,

[PATCH kvm-unit-tests v2 11/14] Build tests with debug information

2010-12-15 Thread Avi Kivity
Signed-off-by: Avi Kivity a...@redhat.com --- Makefile |2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/Makefile b/Makefile index 85ebd37..b6e8759 100644 --- a/Makefile +++ b/Makefile @@ -6,7 +6,7 @@ DESTDIR := $(PREFIX)/share/qemu/tests .PHONY: arch_clean clean #make

[PATCH kvm-unit-tests v2 07/14] Add sample test using the api test harness

2010-12-15 Thread Avi Kivity
Call a function setting a global variable. Signed-off-by: Avi Kivity a...@redhat.com --- api/api-sample.cc | 29 + config-x86-common.mak |7 +++ 2 files changed, 36 insertions(+), 0 deletions(-) create mode 100644 api/api-sample.cc diff --git

[PATCH kvm-unit-tests v2 14/14] Add dirty log test

2010-12-15 Thread Avi Kivity
This checks the failure that was fixed by kernel commit edde99ce0529 (KVM: Write protect memory after slot swap). Two threads are used; a guest thread continuously updates a shared variable, which is also sampled by a host thread that also checks if dirty logging marked it as dirty. It detects

[PATCH kvm-unit-tests v2 13/14] Introduce libapi.a to avoid long Makefile recipes

2010-12-15 Thread Avi Kivity
Signed-off-by: Avi Kivity a...@redhat.com --- config-x86-common.mak | 10 ++ 1 files changed, 6 insertions(+), 4 deletions(-) diff --git a/config-x86-common.mak b/config-x86-common.mak index 436f4bd..ce36cde 100644 --- a/config-x86-common.mak +++ b/config-x86-common.mak @@ -85,8 +85,10

[PATCH kvm-unit-tests v2 10/14] api: add memory map management

2010-12-15 Thread Avi Kivity
Add a class to manage the memory map and a class to represent a memory slot. Signed-off-by: Avi Kivity a...@redhat.com --- api/memmap.cc | 76 + api/memmap.hh | 43 2 files changed, 119 insertions(+), 0

[PATCH kvm-unit-tests v2 09/14] api: support KVM_GET_DIRTY_LOG ioctl

2010-12-15 Thread Avi Kivity
Signed-off-by: Avi Kivity a...@redhat.com --- api/kvmxx.cc |8 api/kvmxx.hh |1 + 2 files changed, 9 insertions(+), 0 deletions(-) diff --git a/api/kvmxx.cc b/api/kvmxx.cc index 42e8781..7ebebb5 100644 --- a/api/kvmxx.cc +++ b/api/kvmxx.cc @@ -163,6 +163,14 @@ void

[PATCH kvm-unit-tests v2 12/14] api: Add support for creating an identity map with a hole

2010-12-15 Thread Avi Kivity
The hole may be used for mmio or dirty logging. Signed-off-by: Avi Kivity a...@redhat.com --- api/api-sample.cc |3 ++- api/identity.cc | 23 +-- api/identity.hh | 17 - config-x86-common.mak |1 + 4 files changed, 40 insertions(+),

[PATCH kvm-unit-tests v2 08/14] api: add support for KVM_SET_USER_MEMORY_REGION flags field

2010-12-15 Thread Avi Kivity
Signed-off-by: Avi Kivity a...@redhat.com --- api/kvmxx.cc |5 +++-- api/kvmxx.hh |3 ++- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/api/kvmxx.cc b/api/kvmxx.cc index ad27907..42e8781 100644 --- a/api/kvmxx.cc +++ b/api/kvmxx.cc @@ -150,12 +150,13 @@ vm::vm(system

[PATCH kvm-unit-tests v2 05/14] Introduce a C++ wrapper for the kvm APIs

2010-12-15 Thread Avi Kivity
Introduce exception-safe objects for calling system, vm, and vcpu ioctls. Signed-off-by: Avi Kivity a...@redhat.com --- api/kvmxx.cc | 185 ++ api/kvmxx.hh | 83 ++ 2 files changed, 268 insertions(+), 0

[PATCH kvm-unit-tests v2 04/14] Add try_main() for running a program under an exception handler

2010-12-15 Thread Avi Kivity
Signed-off-by: Avi Kivity a...@redhat.com --- api/exception.cc | 13 + api/exception.hh |3 +++ 2 files changed, 16 insertions(+), 0 deletions(-) diff --git a/api/exception.cc b/api/exception.cc index 500569a..910bdff 100644 --- a/api/exception.cc +++ b/api/exception.cc @@

[PATCH-v2 0/3] KVM: Take missing slots_lock for kvm_io_bus_unregister_dev()

2010-12-15 Thread Takuya Yoshikawa
This patchset consists of three patches: [1/3] KVM: Take missing slots_lock for kvm_io_bus_unregister_dev() [2/3] KVM: Centralize slots_lock aquisition during KVM_CREATE_IRQCHIP [3/3] KVM: Centralize irq_lock aquisition during KVM_CREATE_IRQCHIP Though patch 1 is a fix, this is only for an

[PATCH 1/3] KVM: Take missing slots_lock for kvm_io_bus_unregister_dev()

2010-12-15 Thread Takuya Yoshikawa
From: Takuya Yoshikawa yoshikawa.tak...@oss.ntt.co.jp In KVM_CREATE_IRQCHIP, kvm_io_bus_unregister_dev() is called without taking slots_lock in the error handling path. Signed-off-by: Takuya Yoshikawa yoshikawa.tak...@oss.ntt.co.jp --- arch/ia64/kvm/kvm-ia64.c |2 ++ arch/x86/kvm/x86.c

[PATCH 2/3] KVM: Centralize slots_lock aquisition during KVM_CREATE_IRQCHIP

2010-12-15 Thread Takuya Yoshikawa
From: Takuya Yoshikawa yoshikawa.tak...@oss.ntt.co.jp Move slots_lock aquisition from kvm_ioapic_init() and kvm_create_pic() to their caller. As a result, x86's KVM_CREATE_IRQCHIP is now covered by a unified slots_lock section, including kvm_setup_default_irq_routing(). Signed-off-by: Takuya

[PATCH 3/3] KVM: Centralize irq_lock aquisition during KVM_CREATE_IRQCHIP

2010-12-15 Thread Takuya Yoshikawa
From: Takuya Yoshikawa yoshikawa.tak...@oss.ntt.co.jp Move irq_lock aquisition from kvm_setup_default_irq_routing(), inside of kvm_set_irq_routing(), to its caller. This makes the lock management clearer, with a bit longer irq_lock section. Signed-off-by: Takuya Yoshikawa

Re: [PATCH v3] qemu,qmp: convert do_inject_nmi() to QObject, QError

2010-12-15 Thread Luiz Capitulino
On Wed, 15 Dec 2010 17:49:27 +0800 Lai Jiangshan la...@cn.fujitsu.com wrote: Convert do_inject_nmi() to QObject, QError, we need to use it(via libvirt). changed from v1 Add document. Add error handling when the cpu index is invalid. changed from v2 use QERR_INVALID_PARAMETER_VALUE as

Re: [Qemu-devel] [PATCH v3] qemu, qmp: convert do_inject_nmi() to QObject, QError

2010-12-15 Thread Luiz Capitulino
On Wed, 15 Dec 2010 11:49:23 +0100 Markus Armbruster arm...@redhat.com wrote: Lai Jiangshan la...@cn.fujitsu.com writes: Convert do_inject_nmi() to QObject, QError, we need to use it(via libvirt). changed from v1 Add document. Add error handling when the cpu index is invalid.

Re: [PATCH v3] qemu,qmp: convert do_inject_nmi() to QObject, QError

2010-12-15 Thread Avi Kivity
On 12/15/2010 07:09 PM, Luiz Capitulino wrote: On Wed, 15 Dec 2010 17:49:27 +0800 Lai Jiangshanla...@cn.fujitsu.com wrote: Convert do_inject_nmi() to QObject, QError, we need to use it(via libvirt). changed from v1 Add document. Add error handling when the cpu index is invalid.

Re: [Qemu-devel] [PATCH v4 1/2] Minimal RAM API support

2010-12-15 Thread Paul Brook
This adds a minimum chunk of Anthony's RAM API support so that we can identify actual VM RAM versus all the other things that make use of qemu_ram_alloc. Why do we care? How are you defining actual VM RAM? Surely the whole point of qemu_ram_alloc is to allocate a chunk of memory that can be

Re: [PATCH v3] qemu,qmp: convert do_inject_nmi() to QObject, QError

2010-12-15 Thread Luiz Capitulino
On Wed, 15 Dec 2010 19:18:32 +0200 Avi Kivity a...@redhat.com wrote: On 12/15/2010 07:09 PM, Luiz Capitulino wrote: On Wed, 15 Dec 2010 17:49:27 +0800 Lai Jiangshanla...@cn.fujitsu.com wrote: Convert do_inject_nmi() to QObject, QError, we need to use it(via libvirt).

Re: [PATCH] qemu-kvm: Switch to upstream -enable-kvm semantics

2010-12-15 Thread Anthony Liguori
On 12/15/2010 09:50 AM, Markus Armbruster wrote: We currently enable KVM by default, and when it's not available, we print a message and fall back to TCG. Option -enable-kvm is ignored. Option -no-kvm suppresses KVM. Upstream works differently: KVM is off by default, -enable-kvm switches it

Re: [PATCH v3] qemu,qmp: convert do_inject_nmi() to QObject, QError

2010-12-15 Thread Markus Armbruster
Luiz Capitulino lcapitul...@redhat.com writes: On Wed, 15 Dec 2010 19:18:32 +0200 Avi Kivity a...@redhat.com wrote: On 12/15/2010 07:09 PM, Luiz Capitulino wrote: On Wed, 15 Dec 2010 17:49:27 +0800 Lai Jiangshanla...@cn.fujitsu.com wrote: Convert do_inject_nmi() to QObject,

Re: [Qemu-devel] [PATCH v3] qemu, qmp: convert do_inject_nmi() to QObject, QError

2010-12-15 Thread Luiz Capitulino
On Wed, 15 Dec 2010 18:39:07 +0100 Markus Armbruster arm...@redhat.com wrote: Luiz Capitulino lcapitul...@redhat.com writes: On Wed, 15 Dec 2010 11:49:23 +0100 Markus Armbruster arm...@redhat.com wrote: Lai Jiangshan la...@cn.fujitsu.com writes: Convert do_inject_nmi() to

Re: [PATCH] qemu-kvm: Switch to upstream -enable-kvm semantics

2010-12-15 Thread Markus Armbruster
Anthony Liguori anth...@codemonkey.ws writes: On 12/15/2010 09:50 AM, Markus Armbruster wrote: We currently enable KVM by default, and when it's not available, we print a message and fall back to TCG. Option -enable-kvm is ignored. Option -no-kvm suppresses KVM. Upstream works differently:

Re: [PATCH v3] qemu,qmp: convert do_inject_nmi() to QObject, QError

2010-12-15 Thread Luiz Capitulino
On Wed, 15 Dec 2010 18:45:09 +0100 Markus Armbruster arm...@redhat.com wrote: Luiz Capitulino lcapitul...@redhat.com writes: On Wed, 15 Dec 2010 19:18:32 +0200 Avi Kivity a...@redhat.com wrote: On 12/15/2010 07:09 PM, Luiz Capitulino wrote: On Wed, 15 Dec 2010 17:49:27 +0800 Lai

Re: [Qemu-devel] [PATCH v4 1/2] Minimal RAM API support

2010-12-15 Thread Alex Williamson
On Wed, 2010-12-15 at 17:23 +, Paul Brook wrote: This adds a minimum chunk of Anthony's RAM API support so that we can identify actual VM RAM versus all the other things that make use of qemu_ram_alloc. Why do we care? How are you defining actual VM RAM? Surely the whole point of

Re: [Qemu-devel] [PATCH v4 1/2] Minimal RAM API support

2010-12-15 Thread Anthony Liguori
On 12/15/2010 11:23 AM, Paul Brook wrote: This adds a minimum chunk of Anthony's RAM API support so that we can identify actual VM RAM versus all the other things that make use of qemu_ram_alloc. Why do we care? How are you defining actual VM RAM? Surely the whole point of qemu_ram_alloc

ConVirt 2.0.1 Open Source released.

2010-12-15 Thread jd
We are pleased to announce availability of ConVirt 2.0.1 open source. We would like to thank ConVirt user community for their continuing participation and support. This release incorporates feedback gathered from the community over last few months. To learn more about the release, please visit

Re: ConVirt 2.0.1 Open Source released.

2010-12-15 Thread Stefan Hajnoczi
On Wed, Dec 15, 2010 at 8:28 PM, jd jdsw2...@yahoo.com wrote: We are pleased to announce availability of ConVirt 2.0.1 open source. We would like to thank ConVirt user community for their continuing participation and support. This release incorporates feedback gathered from the community over

Re: [PATCH 05/21] virtio: modify save/load handler to handle inuse varialble.

2010-12-15 Thread Yoshiaki Tamura
2010/12/3 Yoshiaki Tamura tamura.yoshi...@lab.ntt.co.jp: 2010/12/2 Michael S. Tsirkin m...@redhat.com: On Wed, Dec 01, 2010 at 05:03:43PM +0900, Yoshiaki Tamura wrote: 2010/11/28 Michael S. Tsirkin m...@redhat.com: On Sun, Nov 28, 2010 at 08:27:58PM +0900, Yoshiaki Tamura wrote: 2010/11/28

Re: [PATCH 11/21] ioport: insert event_tap_ioport() to ioport_write().

2010-12-15 Thread Yoshiaki Tamura
2010/11/28 Yoshiaki Tamura tamura.yoshi...@lab.ntt.co.jp: 2010/11/28 Michael S. Tsirkin m...@redhat.com: On Thu, Nov 25, 2010 at 03:06:50PM +0900, Yoshiaki Tamura wrote: Record ioport event to replay it upon failover. Signed-off-by: Yoshiaki Tamura tamura.yoshi...@lab.ntt.co.jp Interesting.

Re: re-writing on powerpc

2010-12-15 Thread Avi Kivity
On 12/14/2010 07:53 PM, Hollis Blanchard wrote: On 12/14/2010 12:48 AM, Avi Kivity wrote: On 12/13/2010 07:17 PM, Hollis Blanchard wrote: Rewriting is dangerous if the guest is unaware of it. As soon as it is made aware of it, it might as well actually do it in the best way that suits it.

Re: re-writing on powerpc

2010-12-15 Thread Avi Kivity
On 12/15/2010 01:16 PM, Sethi Varun-B16395 wrote: -Original Message- From: kvm-ppc-ow...@vger.kernel.org [mailto:kvm-ppc- ow...@vger.kernel.org] On Behalf Of Avi Kivity Sent: Tuesday, December 14, 2010 9:18 PM To: Yoder Stuart-B08248 Cc: Hollis Blanchard; Alexander Graf;

RE: re-writing on powerpc

2010-12-15 Thread Sethi Varun-B16395
-Original Message- From: Avi Kivity [mailto:a...@redhat.com] Sent: Wednesday, December 15, 2010 4:49 PM To: Sethi Varun-B16395 Cc: Yoder Stuart-B08248; Hollis Blanchard; Alexander Graf; kvm- p...@vger.kernel.org Subject: Re: re-writing on powerpc On 12/15/2010 01:16 PM, Sethi

Re: re-writing on powerpc

2010-12-15 Thread Avi Kivity
On 12/15/2010 01:32 PM, Sethi Varun-B16395 wrote: But KVM would be aware of guest page mappings, so access permissions for any particular mapping can be controlled by KVM. kvm isn't aware of all guest mappings (only those that were instantiated in shadow tlb/pagetables). I am not