* James Bottomley <James.Bottomley@xxxxxxxxxxxxxxxxxxxxx> wrote: > This represents the tree I had waitin on other mergers. I'm not sure > this is it, because there are other features (like aic94xx running > abort) we're racing to get in. > > The patch is available at: > > master.kernel.org:/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6.git hm, got this crash with latest -git shortly after i rebased from this morning's git to this night's git, it looks SCSI related: [ 44.513114] Calling initcall 0xc1cece47: init_this_scsi_driver+0x0/0xd0() [ 47.919053] BUG: unable to handle kernel NULL pointer dereference at 00000004 [ 47.927035] IP: [<c09cf947>] scsi_destroy_command_freelist+0x15/0x5a [ 47.931008] *pde = 00000000 [ 47.935253] Oops: 0000 [#1] SMP DEBUG_PAGEALLOC [ 47.939004] Modules linked in: [ 47.939004] [ 47.939004] Pid: 1, comm: swapper Not tainted (2.6.25-sched-devel.git-x86-latest.git #5) [ 47.939004] EIP: 0060:[<c09cf947>] EFLAGS: 00010217 CPU: 0 [ 47.939004] EIP is at scsi_destroy_command_freelist+0x15/0x5a [ 47.939004] EAX: c0042000 EBX: 00000000 ECX: c199ba14 EDX: fffffffc [ 47.939004] ESI: c0042000 EDI: c0042034 EBP: f7c36ebc ESP: f7c36eb0 [ 47.939004] DS: 007b ES: 007b FS: 00d8 GS: 0000 SS: 0068 [ 47.939004] Process swapper (pid: 1, ti=f7c36000 task=f7c4e000 task.ti=f7c36000) [ 47.939004] Stack: c0042000 00000000 00000000 f7c36ecc c09cfa4c c004225c c1a43378 f7c36ed4 [ 47.939004] c0688535 f7c36ee8 c04e942b c0042260 c04e93e6 00000330 f7c36ef8 c04e9f20 [ 47.939004] c004225c 00000002 f7c36f04 c04e9353 c0042000 f7c36f0c c0688aee f7c36f14 [ 47.939004] Call Trace: [ 47.939004] [<c09cfa4c>] ? scsi_host_dev_release+0x79/0xa9 [ 47.939004] [<c0688535>] ? device_release+0x3e/0x54 [ 47.939004] [<c04e942b>] ? kobject_release+0x45/0x55 [ 47.939004] [<c04e93e6>] ? kobject_release+0x0/0x55 [ 47.939004] [<c04e9f20>] ? kref_put+0x3e/0x49 [ 47.939004] [<c04e9353>] ? kobject_put+0x41/0x46 [ 47.939004] [<c0688aee>] ? put_device+0x16/0x18 [ 47.939004] [<c09cf9d1>] ? scsi_host_put+0x12/0x14 [ 47.939004] [<c09cfbac>] ? scsi_unregister+0x1d/0x20 [ 47.939004] [<c1cece2d>] ? aha1542_detect+0x7d1/0x7eb [ 47.939004] [<c016de2e>] ? trace_hardirqs_on+0xb/0xd [ 47.939004] [<c1cece52>] ? init_this_scsi_driver+0xb/0xd0 [ 47.939004] [<c01922a7>] ? ftrace_record_ip+0x1d4/0x1ed [ 47.939004] [<c1cecea5>] ? init_this_scsi_driver+0x5e/0xd0 [ 47.939004] [<c1c934e5>] ? kernel_init+0x152/0x2b0 [ 47.939004] [<c1c93393>] ? kernel_init+0x0/0x2b0 [ 47.939004] [<c1c93393>] ? kernel_init+0x0/0x2b0 [ 47.939004] [<c011c967>] ? kernel_thread_helper+0x7/0x10 [ 47.939004] ======================= [ 47.939004] Code: ff eb 0c 89 fa 83 c0 04 e8 78 ba b2 ff 31 d2 5b 89 d0 5e 5f 5d c3 55 89 e5 57 56 53 e8 cf d0 74 ff 89 c6 8d 78 34 eb 1c 8d 53 fc <8b> 42 08 8b 4a 04 89 41 04 89 08 89 5a 08 89 5a 04 8b 46 10 e8 [ 47.939004] EIP: [<c09cf947>] scsi_destroy_command_freelist+0x15/0x5a SS:ESP 0068:f7c36eb0 see: http://redhat.com/~mingo/misc/config-Mon_Apr_28_03_01_00_CEST_2008.bad http://redhat.com/~mingo/misc/log-Mon_Apr_28_03_01_00_CEST_2008.bad the commits i pulled are below. The tree before that survived 100+ randconfig bootups - this failed after 7 iterations. Ingo ----------------------> commit 064922a805ec7aadfafdd27aa6b4908d737c3c1d Merge: 42cadc8... ecc1241... Author: Linus Torvalds <torvalds@xxxxxxxxxxxxxxxxxxxx> Date: Sun Apr 27 11:25:00 2008 -0700 Merge git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6 * git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6: (40 commits) [SCSI] jazz_esp, sgiwd93, sni_53c710, sun3x_esp: fix platform driver hotplug/coldplug [SCSI] aic7xxx: add const [SCSI] aic7xxx: add static [SCSI] aic7xxx: Update _shipped files [SCSI] aic7xxx: teach aicasm to not emit unused debug code/data [SCSI] qla2xxx: Update version number to 8.02.01-k2. [SCSI] qla2xxx: Correct regression in relogin code. [SCSI] qla2xxx: Correct misc. endian and byte-ordering issues. [SCSI] qla2xxx: make qla2x00_issue_iocb_timeout() static [SCSI] qla2xxx: qla_os.c, make 2 functions static [SCSI] qla2xxx: Re-register FDMI information after a LIP. [SCSI] qla2xxx: Correct SRB usage-after-completion/free issues. [SCSI] qla2xxx: Correct ISP84XX verify-chip response handling. [SCSI] qla2xxx: Wakeup DPC thread to process any deferred-work requests. [SCSI] qla2xxx: Collapse RISC-RAM retrieval code during a firmware-dump. [SCSI] m68k: new mac_esp scsi driver [SCSI] zfcp: Add some statistics provided by the FCP adapter to the sysfs [SCSI] zfcp: Print some messages only during ERP [SCSI] zfcp: Wait for free SBAL during exchange config [SCSI] scsi_transport_fc: fc_user_scan correction ... commit ecc1241e80a0bdc854b1602a44be3ad106753d4f Author: Kay Sievers <kay.sievers@xxxxxxxx> Date: Fri Apr 18 13:57:19 2008 -0700 [SCSI] jazz_esp, sgiwd93, sni_53c710, sun3x_esp: fix platform driver hotplug/coldplug Since commit 43cc71eed1250755986da4c0f9898f9a635cb3bf Author: Kay Sievers <kay.sievers@xxxxxxxx> Date: Sat Aug 18 04:40:39 2007 +0200 platform: prefix MODALIAS with "platform:" the platform modalias is prefixed with "platform:". Add MODULE_ALIAS() to the hotpluggable SCSI platform drivers, to re-enable auto loading. [dbrownell@xxxxxxxxxxxxxxxxxxxxx: more drivers, registration fixes] [akpm@xxxxxxxxxxxxxxxxxxxx: fix sgiwd93.c] Signed-off-by: Kay Sievers <kay.sievers@xxxxxxxx> Signed-off-by: David Brownell <dbrownell@xxxxxxxxxxxxxxxxxxxxx> Signed-off-by: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> Signed-off-by: James Bottomley <James.Bottomley@xxxxxxxxxxxxxxxxxxxxx> commit 980b306a297725d4f25c779ca15086de757acadf Author: Denys Vlasenko <vda.linux@xxxxxxxxxxxxxx> Date: Fri Apr 25 04:36:01 2008 +0200 [SCSI] aic7xxx: add const This patch adds more const keywords where appropriate. Signed-off-by: Denys Vlasenko <vda.linux@xxxxxxxxxxxxxx> Acked-by: Hannes Reinecke <hare@xxxxxxx> Signed-off-by: James Bottomley <James.Bottomley@xxxxxxxxxxxxxxxxxxxxx> commit d1d7b19d433188e94fc87cc7ca66363cd77a0bba Author: Denys Vlasenko <vda.linux@xxxxxxxxxxxxxx> Date: Fri Apr 25 04:34:49 2008 +0200 [SCSI] aic7xxx: add static This patch adds static (and sometimes const) keywords where appropriate. Signed-off-by: Denys Vlasenko <vda.linux@xxxxxxxxxxxxxx> Acked-by: Hannes Reinecke <hare@xxxxxxx> Signed-off-by: James Bottomley <James.Bottomley@xxxxxxxxxxxxxxxxxxxxx> commit d10c2e4627b0dda286bcd1c77720eb5fe4a04f93 Author: Hannes Reinecke <hare@xxxxxxx> Date: Fri Apr 25 15:03:05 2008 +0200 [SCSI] aic7xxx: Update _shipped files Update the precompiled sequencer code to match the latest aicasm changes. Signed-off-by: Hannes Reinecke <hare@xxxxxxx> Signed-off-by: James Bottomley <James.Bottomley@xxxxxxxxxxxxxxxxxxxxx> commit 3dbd10f3d8b00dad35d3fac95e91c066ae71d9a8 Author: Hannes Reinecke <hare@xxxxxxx> Date: Fri Apr 25 15:01:41 2008 +0200 [SCSI] aic7xxx: teach aicasm to not emit unused debug code/data Add a 'count' variable to each symbol which gets increased every time the symbol is referenced. And then modify the register definition to include counts for symbols which are referenced from the source code only and not from the sequencer code. This will give us an automatic usage count for the symbols with only minimal hand-crafting. Signed-off-by: James Bottomley <James.Bottomley@xxxxxxxxxxxxxxxxxxxxx> commit a198c3d0393faa1fa9f0e6e917ce980d3638f8df Author: Andrew Vasquez <andrew.vasquez@xxxxxxxxxx> Date: Thu Apr 24 15:21:31 2008 -0700 [SCSI] qla2xxx: Update version number to 8.02.01-k2. Signed-off-by: Andrew Vasquez <andrew.vasquez@xxxxxxxxxx> Signed-off-by: James Bottomley <James.Bottomley@xxxxxxxxxxxxxxxxxxxxx> commit 666301e673e192c87a40e07a8357d6996b57b70f Author: Andrew Vasquez <andrew.vasquez@xxxxxxxxxx> Date: Thu Apr 24 15:21:30 2008 -0700 [SCSI] qla2xxx: Correct regression in relogin code. Commit 63a8651f2548c6bb5132c0b4e7dad4f57a9274db ([SCSI] qla2xxx: Correct infinite-login-retry issue.) introduced a small regression where a successful relogin would result in an fcport's loop_id to be incorrectly reset to FC_NO_LOOP_ID. Only clear-out loopid, if retries have been 'truly' exhausted. Signed-off-by: Andrew Vasquez <andrew.vasquez@xxxxxxxxxx> Cc: Stable Tree <stable@xxxxxxxxxx> Signed-off-by: James Bottomley <James.Bottomley@xxxxxxxxxxxxxxxxxxxxx> commit c6852c4c5984fff130a859792d4b26d30c85c54b Author: Seokmann Ju <seokmann.ju@xxxxxxxxxx> Date: Thu Apr 24 15:21:29 2008 -0700 [SCSI] qla2xxx: Correct misc. endian and byte-ordering issues. There were several places in the driver which could cause byte ordering problem as provided by Al Viro <viro@xxxxxxxxxxxxxxxxxx>. Signed-off-by: Seokmann Ju <seokmann.ju@xxxxxxxxxx> Signed-off-by: James Bottomley <James.Bottomley@xxxxxxxxxxxxxxxxxxxxx> commit 3b8117b837f5768f46e9a876a58de11606f63483 Author: Adrian Bunk <bunk@xxxxxxxxxx> Date: Thu Apr 24 15:21:28 2008 -0700 [SCSI] qla2xxx: make qla2x00_issue_iocb_timeout() static This patch makes the needlessly global qla2x00_issue_iocb_timeout() static. Signed-off-by: Adrian Bunk <bunk@xxxxxxxxxx> Signed-off-by: Andrew Vasquez <andrew.vasquez@xxxxxxxxxx> Signed-off-by: James Bottomley <James.Bottomley@xxxxxxxxxxxxxxxxxxxxx> commit 01ef66bbb65aa4db100b267778202d7657e244e4 Author: Adrian Bunk <bunk@xxxxxxxxxx> Date: Thu Apr 24 15:21:27 2008 -0700 [SCSI] qla2xxx: qla_os.c, make 2 functions static This patch makes the following needlessly global functions static: - qla2x00_alloc_work() - qla2x00_post_work() Signed-off-by: Adrian Bunk <bunk@xxxxxxxxxx> Signed-off-by: Andrew Vasquez <andrew.vasquez@xxxxxxxxxx> Signed-off-by: James Bottomley <James.Bottomley@xxxxxxxxxxxxxxxxxxxxx> commit 7e47e5ca184548341a82eeb2238ee3622c43cae1 Author: Andrew Vasquez <andrew.vasquez@xxxxxxxxxx> Date: Thu Apr 24 15:21:26 2008 -0700 [SCSI] qla2xxx: Re-register FDMI information after a LIP. Original code would (incorrectly) only re-register after a loop-down condition. Also, FDMI registration should be enabled by default. Signed-off-by: Andrew Vasquez <andrew.vasquez@xxxxxxxxxx> Signed-off-by: James Bottomley <James.Bottomley@xxxxxxxxxxxxxxxxxxxxx> commit 0c23b856581673c90aa619b1ab04127a7f90cea2 Author: Andrew Vasquez <andrew.vasquez@xxxxxxxxxx> Date: Thu Apr 24 15:21:25 2008 -0700 [SCSI] qla2xxx: Correct SRB usage-after-completion/free issues. The driver is incorrectly assuming that the 'sp' reference held in qla2[x00|4xx]_abort_command() is valid after the mailbox command is issued to abort the exchange. It is *not*, as the command may be completed during interrupt context before control is returned to the mailbox caller. Signed-off-by: Andrew Vasquez <andrew.vasquez@xxxxxxxxxx> Signed-off-by: James Bottomley <James.Bottomley@xxxxxxxxxxxxxxxxxxxxx> commit c1ec1f1bf9cb1ba80e79a74d48bcfb5da246d6f6 Author: Andrew Vasquez <andrew.vasquez@xxxxxxxxxx> Date: Thu Apr 24 15:21:24 2008 -0700 [SCSI] qla2xxx: Correct ISP84XX verify-chip response handling. Earlier code could trigger an infinite-retry if 1st invocation returned a non-CS_COMPLETE status. Signed-off-by: Andrew Vasquez <andrew.vasquez@xxxxxxxxxx> Signed-off-by: James Bottomley <James.Bottomley@xxxxxxxxxxxxxxxxxxxxx> commit 550bf57dfb2200721baa43cfd9a8c75c2c166870 Author: Andrew Vasquez <andrew.vasquez@xxxxxxxxxx> Date: Thu Apr 24 15:21:23 2008 -0700 [SCSI] qla2xxx: Wakeup DPC thread to process any deferred-work requests. Signed-off-by: Andrew Vasquez <andrew.vasquez@xxxxxxxxxx> Signed-off-by: James Bottomley <James.Bottomley@xxxxxxxxxxxxxxxxxxxxx> commit c5722708c236b51286651b8c07855f764239453b Author: Andrew Vasquez <andrew.vasquez@xxxxxxxxxx> Date: Thu Apr 24 15:21:22 2008 -0700 [SCSI] qla2xxx: Collapse RISC-RAM retrieval code during a firmware-dump. Use the more efficient read-DMA'ble-buffer mailbox commands rather than reading a single word/dword at a time. We also remove a bulk of the duplicate mailbox command-handling codes in favor of more generic read-memory() routines (qla2xxx_dump_ram() and qla24xx_dump_ram()). Signed-off-by: Andrew Vasquez <andrew.vasquez@xxxxxxxxxx> Signed-off-by: James Bottomley <James.Bottomley@xxxxxxxxxxxxxxxxxxxxx> commit 6fe07aaffbf086a0ce9134ef27ce4a8921ff5947 Author: Finn Thain <fthain@xxxxxxxxxxxxxxxxxxx> Date: Fri Apr 25 10:06:05 2008 -0500 [SCSI] m68k: new mac_esp scsi driver Replace the mac_esp driver with a new one based on the esp_scsi core. For esp_scsi: add support for sync transfers for the PIO mode, add a new esp_driver_ops method to get the maximum dma transfer size (like the old NCR53C9x driver), and some cleanups. Signed-off-by: Finn Thain <fthain@xxxxxxxxxxxxxxxxxxx> Acked-by: David S. Miller <davem@xxxxxxxxxxxxx> Signed-off-by: Geert Uytterhoeven <geert@xxxxxxxxxxxxxx> Signed-off-by: James Bottomley <James.Bottomley@xxxxxxxxxxxxxxxxxxxxx> commit 6d9d63b9480e1c7ea41845646de803c2d3f0eae2 Author: Swen Schillig <swen@xxxxxxxxxxxx> Date: Thu Apr 24 19:35:54 2008 +0200 [SCSI] zfcp: Add some statistics provided by the FCP adapter to the sysfs The new FCP adapter statistics provide a variety of information about the virtual adapter (subchannel). In order to collect this information the zfcp driver is extended to query this information. The information provided by the new FCP adapter statistics can be fetched by reading from the following files in the sysfs filesystem /sys/class/scsi_host/host<n>/seconds_active /sys/class/scsi_host/host<n>/requests /sys/class/scsi_host/host<n>/megabytes /sys/class/scsi_host/host<n>/utilization These are the statistics on a virtual adapter (subchannel) level. The information provided is raw and not modified or interpreted by any means. No interpretation or modification of the values is done by the zfcp driver. Signed-off-by: Swen Schillig <swen@xxxxxxxxxxxx> Signed-off-by: Christof Schmitt <christof.schmitt@xxxxxxxxxx> Signed-off-by: James Bottomley <James.Bottomley@xxxxxxxxxxxxxxxxxxxxx> commit ec258fe4b76dba29e1a149cd8f23ee931b47afb2 Author: Swen Schillig <swen@xxxxxxxxxxxx> Date: Thu Apr 24 19:35:53 2008 +0200 [SCSI] zfcp: Print some messages only during ERP When statistics are polled from sysfs, the statistics use the same commands as the adapter initialization. Change the messages printed here, so they are only printed during initialization and not for each poll of adapter data. Signed-off-by: Swen Schillig <swen@xxxxxxxxxxxx> Signed-off-by: Christof Schmitt <christof.schmitt@xxxxxxxxxx> Signed-off-by: James Bottomley <James.Bottomley@xxxxxxxxxxxxxxxxxxxxx> commit aee6ef1859fd975b285b6de1857f7dcf39671818 Author: Swen Schillig <swen@xxxxxxxxxxxx> Date: Thu Apr 24 19:35:52 2008 +0200 [SCSI] zfcp: Wait for free SBAL during exchange config When sending a exchange config data command, wait for a free SBAL. This does not matter during adapter initialization, but this is required for pulling adapter statistics during high I/O load. Signed-off-by: Swen Schillig <swen@xxxxxxxxxxxx> Signed-off-by: Christof Schmitt <christof.schmitt@xxxxxxxxxx> Signed-off-by: James Bottomley <James.Bottomley@xxxxxxxxxxxxxxxxxxxxx> commit bda232531f0c117921690ee3c060953c8f12e5a1 Author: James Smart <James.Smart@xxxxxxxxxx> Date: Thu Apr 24 12:12:46 2008 -0400 [SCSI] scsi_transport_fc: fc_user_scan correction Way back when, when the fc_user_scan routine was created, it kept some of its original logic that walked the rport list and kicked off a scan. Unfortunately, it didn't keep any of the locking around the rport list, nor did it consider the synchronous nature of the scan invoked. The result, there are some scan requests where the rport list changes, thus a subsequent scan is called on a bogus rport structure and the system NMI's. Signed-off-by: James Smart <james.smart@xxxxxxxxxx> Signed-off-by: James Bottomley <James.Bottomley@xxxxxxxxxxxxxxxxxxxxx> commit 87c4d7bc2aaa9b782aac6ab0a74cf16f87398bbc Author: Jeff Garzik <jeff@xxxxxxxxxx> Date: Thu Apr 24 19:45:32 2008 -0400 [SCSI] aha1542: minor irq handler cleanups - where the 'irq' function argument is known never to be used, rename it to 'dummy' to make this more obvious - replace per-irq lookup functions and tables with a direct reference to data object obtained via 'dev_id' function argument, passed from request_irq() Signed-off-by: Jeff Garzik <jgarzik@xxxxxxxxxx> Signed-off-by: James Bottomley <James.Bottomley@xxxxxxxxxxxxxxxxxxxxx> commit 9f9a73b6fe0c8fd9b54b650e34956eb92df6abfa Author: Randy Dunlap <randy.dunlap@xxxxxxxxxx> Date: Wed Apr 23 09:56:14 2008 -0700 [SCSI] scsi_transport_spi: include sysfs.h scsi_transport_spi.c needs to #include <linux/sysfs.h>: next-20080423/drivers/scsi/scsi_transport_spi.c:1467: error: implicit declaration of function 'sysfs_update_group' make[3]: *** [drivers/scsi/scsi_transport_spi.o] Error 1 Signed-off-by: Randy Dunlap <randy.dunlap@xxxxxxxxxx> Signed-off-by: James Bottomley <James.Bottomley@xxxxxxxxxxxxxxxxxxxxx> commit 1377d8dd7e1b5526637958aabb5427bbee5a68d7 Author: Adrian Bunk <bunk@xxxxxxxxxx> Date: Wed Apr 23 12:51:10 2008 +0300 [SCSI] FlashPoint: fix off-by-one errors This patch fixes off-by-one errors in error checks (the variables are used as array indexes for arrays with MAX_SCSI_TAR resp. MAX_LUN elements) spotted by the Coverity checker. Signed-off-by: Adrian Bunk <bunk@xxxxxxxxxx> Signed-off-by: James Bottomley <James.Bottomley@xxxxxxxxxxxxxxxxxxxxx> commit 2b48aed182c65b3387b076364ab286c445aa4a93 Author: Hannes Reinecke <hare@xxxxxxx> Date: Wed Apr 23 11:39:49 2008 +0200 [SCSI] aic7xxx: Update type check in aicasm grammar The function type_check() in aicasm grammar code was never used properly due to a bug. This patch fixes it up and ensures it's only called if appropriate. In addition the unused 16bit instruction are disabled, but left in the code for reference. Signed-off-by: Hannes Reinecke <hare@xxxxxxx> Signed-off-by: James Bottomley <James.Bottomley@xxxxxxxxxxxxxxxxxxxxx> commit 542bd1377a963070bc4a03ff7d2690ddf3920596 Author: James Bottomley <James.Bottomley@xxxxxxxxxxxxxxxxxxxxx> Date: Mon Apr 21 10:57:20 2008 -0500 [SCSI] fix SLUB WARN_ON We're getting a WARN_ON from SLUB indicating that we're trying to free caches with in-use objects. The root cause is a new dependency in the command/sense free on unchecked_isa_dma. The WARN_ON is caused by drivers which change this in their setup after the command/sense cache is allocated. The fix is to move the allocation of this cache into scsi_add_host() so things like gdth have an opportunity to modify it between alloc and add (but *not* after). The true fix would be to move unchecked_isa_dma into the template and out of the host, so it because a truly read only variable. Signed-off-by: James Bottomley <James.Bottomley@xxxxxxxxxxxxxxxxxxxxx> commit 42cadc86008aae0fd9ff31642dc01ed50723cf32 Merge: fba5c1a... 66c0b39... Author: Linus Torvalds <torvalds@xxxxxxxxxxxxxxxxxxxx> Date: Sun Apr 27 10:13:52 2008 -0700 Merge branch 'kvm-updates-2.6.26' of git://git.kernel.org/pub/scm/linux/kernel/git/avi/kvm * 'kvm-updates-2.6.26' of git://git.kernel.org/pub/scm/linux/kernel/git/avi/kvm: (147 commits) KVM: kill file->f_count abuse in kvm KVM: MMU: kvm_pv_mmu_op should not take mmap_sem KVM: SVM: remove selective CR0 comment KVM: SVM: remove now obsolete FIXME comment KVM: SVM: disable CR8 intercept when tpr is not masking interrupts KVM: SVM: sync V_TPR with LAPIC.TPR if CR8 write intercept is disabled KVM: export kvm_lapic_set_tpr() to modules KVM: SVM: sync TPR value to V_TPR field in the VMCB KVM: ppc: PowerPC 440 KVM implementation KVM: Add MAINTAINERS entry for PowerPC KVM KVM: ppc: Add DCR access information to struct kvm_run ppc: Export tlb_44x_hwater for KVM KVM: Rename debugfs_dir to kvm_debugfs_dir KVM: x86 emulator: fix lea to really get the effective address KVM: x86 emulator: fix smsw and lmsw with a memory operand KVM: x86 emulator: initialize src.val and dst.val for register operands KVM: SVM: force a new asid when initializing the vmcb KVM: fix kvm_vcpu_kick vs __vcpu_run race KVM: add ioctls to save/store mpstate KVM: Rename VCPU_MP_STATE_* to KVM_MP_STATE_* ... commit fba5c1af5c4fd6645fe62ea84ccde0981282cf66 Merge: f222eba... 077e3bd... Author: Linus Torvalds <torvalds@xxxxxxxxxxxxxxxxxxxx> Date: Sun Apr 27 10:13:06 2008 -0700 Merge git://git.kernel.org/pub/scm/linux/kernel/git/bart/ide-2.6 * git://git.kernel.org/pub/scm/linux/kernel/git/bart/ide-2.6: (49 commits) ide-tape: remove tape->merge_stage ide-tape: mv tape->merge_stage_size tape->merge_bh_size ide-tape: mv idetape_empty_write_pipeline ide_tape_flush_merge_buffer ide-tape: mv idetape_discard_read_pipeline ide_tape_discard_merge_buffer ide-tape: make __idetape_discard_read_pipeline() of type void ide: remove now unused ide_pci_create_host_proc() ide: remove /proc/ide/ali ide-tape: improve buffer pages freeing strategy ide-tape: mv tape->pages_per_stage tape->pages_per_buffer ide-tape: mv tape->stage_size tape->buffer_size ide-tape: improve buffer allocation strategy ide: add struct ide_io_ports (take 3) ide: make ide_unregister() take 'ide_hwif_t *' as an argument (take 2) ide: sanitize ide_unregister() usage mpc8xx-ide: use ide_find_port() ide: add "noacpi" / "acpigtf" / "acpionboot" parameters gayle: add "doubler" parameter ide: add "cdrom=" and "chs=" parameters ide: add "nodma|noflush|noprobe|nowerr=" parameters ide: remove obsoleted "hdx=autotune" kernel parameter ... commit f222eba0f9d98376d363b51fcc2361fb56929844 Merge: cf867ac... 7f424a8... Author: Linus Torvalds <torvalds@xxxxxxxxxxxxxxxxxxxx> Date: Sun Apr 27 10:10:54 2008 -0700 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/x86/linux-2.6-idle-fix * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/x86/linux-2.6-idle-fix: fix idle (arch, acpi and apm) and lockdep commit cf867ac375cea7c7a834eaddaf373e2662d9e260 Merge: 2d630d1... 2043021... Author: Linus Torvalds <torvalds@xxxxxxxxxxxxxxxxxxxx> Date: Sun Apr 27 10:10:37 2008 -0700 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input: Input: xpad - fix build failure commit 2d630d1a6827bb7266dcd8bba5f99fac2505ee97 Merge: f375d55... ed4d3c1... Author: Linus Torvalds <torvalds@xxxxxxxxxxxxxxxxxxxx> Date: Sun Apr 27 10:10:14 2008 -0700 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband: mlx4_core: Add helper to move QP to ready-to-send mlx4_core: Add HW queues allocation helpers RDMA/nes: Remove volatile qualifier from struct nes_hw_cq.cq_vbase mlx4_core: CQ resizing should pass a 0 opcode modifier to MODIFY_CQ mlx4_core: Move kernel doorbell management into core IB/ehca: Bump version number to 0026 IB/ehca: Make some module parameters bool, update descriptions IB/ehca: Remove mr_largepage parameter IB/ehca: Move high-volume debug output to higher debug levels IB/ehca: Prevent posting of SQ WQEs if QP not in RTS IPoIB: Handle 4K IB MTU for UD (datagram) mode RDMA/nes: Fix adapter reset after PXE boot RDMA/nes: Print IPv4 addresses in a readable format RDMA/nes: Use print_mac() to format ethernet addresses for printing commit f375d5588ff62caf31b4a68ac9347c153ac56590 Author: Al Viro <viro@xxxxxxxxxxxxxxxxxx> Date: Sun Apr 27 06:19:18 2008 +0100 asm/unaligned.h doesn't work well as the very first include Signed-off-by: Al Viro <viro@xxxxxxxxxxxxxxxxxx> Signed-off-by: Linus Torvalds <torvalds@xxxxxxxxxxxxxxxxxxxx> commit 7ac86bf61ad570a2ef642a3f7e72274570ace9c4 Author: Al Viro <viro@xxxxxxxxxxxxxxxxxx> Date: Sun Apr 27 06:15:42 2008 +0100 e1000e triggers sparc32 gcc bug ... and isn't possible on sparc32 boxen anyway, unless somebody had done JavaStation with PCIE lately. Signed-off-by: Al Viro <viro@xxxxxxxxxxxxxxxxxx> Acked-by: David S. Miller <davem@xxxxxxxxxxxxx> Signed-off-by: Linus Torvalds <torvalds@xxxxxxxxxxxxxxxxxxxx> commit 66c0b394f08fd89236515c1c84485ea712a157be Author: Al Viro <viro@xxxxxxxxxxxxxxxxxx> Date: Sat Apr 19 20:33:56 2008 +0100 KVM: kill file->f_count abuse in kvm Use kvm own refcounting instead of playing with ->filp->f_count. That will allow to get rid of a lot of crap in anon_inode_getfd() and kill a race in kvm_dev_ioctl_create_vm() (file might have been closed immediately by another thread, so ->filp might point to already freed struct file when we get around to setting it). Signed-off-by: Al Viro <viro@xxxxxxxxxxxxxxxxxx> Signed-off-by: Avi Kivity <avi@xxxxxxxxxxxx> commit 960b3991698872f68f09d51f4c2794ad484fe1fd Author: Marcelo Tosatti <mtosatti@xxxxxxxxxx> Date: Wed Apr 16 17:19:06 2008 -0300 KVM: MMU: kvm_pv_mmu_op should not take mmap_sem kvm_pv_mmu_op should not take mmap_sem. All gfn_to_page() callers down in the MMU processing will take it if necessary, so as it is it can deadlock. Apparently a leftover from the days before slots_lock. Signed-off-by: Marcelo Tosatti <mtosatti@xxxxxxxxxx> Signed-off-by: Avi Kivity <avi@xxxxxxxxxxxx> commit 1336028b9a1fb33537eab8caec66e812eb8cad63 Author: Joerg Roedel <joerg.roedel@xxxxxxx> Date: Wed Apr 16 17:01:05 2008 +0200 KVM: SVM: remove selective CR0 comment There is not selective cr0 intercept bug. The code in the comment sets the CR0.PG bit. But KVM sets the CR4.PG bit for SVM always to implement the paged real mode. So the 'mov %eax,%cr0' instruction does not change the CR0.PG bit. Selective CR0 intercepts only occur when a bit is actually changed. So its the right behavior that there is no intercept on this instruction. Signed-off-by: Joerg Roedel <joerg.roedel@xxxxxxx> Signed-off-by: Avi Kivity <avi@xxxxxxxxxxxx> commit aaf697e4e02bf6f7dd6105877bc58ebdbf612d66 Author: Joerg Roedel <joerg.roedel@xxxxxxx> Date: Wed Apr 16 16:51:19 2008 +0200 KVM: SVM: remove now obsolete FIXME comment With the usage of the V_TPR field this comment is now obsolete. Signed-off-by: Joerg Roedel <joerg.roedel@xxxxxxx> Signed-off-by: Avi Kivity <avi@xxxxxxxxxxxx> commit aaacfc9ae225e88695e610a35627d2256dc08633 Author: Joerg Roedel <joerg.roedel@xxxxxxx> Date: Wed Apr 16 16:51:18 2008 +0200 KVM: SVM: disable CR8 intercept when tpr is not masking interrupts This patch disables the intercept of CR8 writes if the TPR is not masking interrupts. This reduces the total number CR8 intercepts to below 1 percent of what we have without this patch using Windows 64 bit guests. Signed-off-by: Joerg Roedel <joerg.roedel@xxxxxxx> Signed-off-by: Avi Kivity <avi@xxxxxxxxxxxx> commit d7bf8221a3037d0d0760a1ccf1833bda03213abf Author: Joerg Roedel <joerg.roedel@xxxxxxx> Date: Wed Apr 16 16:51:17 2008 +0200 KVM: SVM: sync V_TPR with LAPIC.TPR if CR8 write intercept is disabled If the CR8 write intercept is disabled the V_TPR field of the VMCB needs to be synced with the TPR field in the local apic. Signed-off-by: Joerg Roedel <joerg.roedel@xxxxxxx> Signed-off-by: Avi Kivity <avi@xxxxxxxxxxxx> commit ec7cf6903ffced20098e2bcc27a184172836dfb9 Author: Joerg Roedel <joerg.roedel@xxxxxxx> Date: Wed Apr 16 16:51:16 2008 +0200 KVM: export kvm_lapic_set_tpr() to modules This patch exports the kvm_lapic_set_tpr() function from the lapic code to modules. It is required in the kvm-amd module to optimize CR8 intercepts. Signed-off-by: Joerg Roedel <joerg.roedel@xxxxxxx> Signed-off-by: Avi Kivity <avi@xxxxxxxxxxxx> commit 649d68643ebf02f31859ffbb16676aa44c72e6e9 Author: Joerg Roedel <joerg.roedel@xxxxxxx> Date: Wed Apr 16 16:51:15 2008 +0200 KVM: SVM: sync TPR value to V_TPR field in the VMCB This patch adds syncing of the lapic.tpr field to the V_TPR field of the VMCB. With this change we can safely remove the CR8 read intercept. Signed-off-by: Joerg Roedel <joerg.roedel@xxxxxxx> Signed-off-by: Avi Kivity <avi@xxxxxxxxxxxx> commit bbf45ba57eaec56569918a8bab96ab653bd45ec1 Author: Hollis Blanchard <hollisb@xxxxxxxxxx> Date: Wed Apr 16 23:28:09 2008 -0500 KVM: ppc: PowerPC 440 KVM implementation This functionality is definitely experimental, but is capable of running unmodified PowerPC 440 Linux kernels as guests on a PowerPC 440 host. (Only tested with 440EP "Bamboo" guests so far, but with appropriate userspace support other SoC/board combinations should work.) See Documentation/powerpc/kvm_440.txt for technical details. [stephen: build fix] Signed-off-by: Hollis Blanchard <hollisb@xxxxxxxxxx> Acked-by: Paul Mackerras <paulus@xxxxxxxxx> Signed-off-by: Stephen Rothwell <sfr@xxxxxxxxxxxxxxxx> Signed-off-by: Avi Kivity <avi@xxxxxxxxxxxx> commit 513014b717203d1d689652d0fda86eee959a6a8a Author: Hollis Blanchard <hollisb@xxxxxxxxxx> Date: Wed Apr 16 23:28:08 2008 -0500 KVM: Add MAINTAINERS entry for PowerPC KVM Signed-off-by: Hollis Blanchard <hollisb@xxxxxxxxxx> Acked-by: Paul Mackerras <paulus@xxxxxxxxx> Signed-off-by: Avi Kivity <avi@xxxxxxxxxxxx> commit b2312f059c893833de58876c74290511846cd208 Author: Hollis Blanchard <hollisb@xxxxxxxxxx> Date: Wed Apr 16 23:28:07 2008 -0500 KVM: ppc: Add DCR access information to struct kvm_run Device Control Registers are essentially another address space found on PowerPC 4xx processors, analogous to PIO on x86. DCRs are always 32 bits, and can be identified by a 32-bit number. We forward most DCR accesses to userspace for emulation (with the exception of CPR0 registers, which can be read directly for simplicity in timebase frequency determination). Signed-off-by: Hollis Blanchard <hollisb@xxxxxxxxxx> Signed-off-by: Avi Kivity <avi@xxxxxxxxxxxx> commit 4baacfb0de53b05428c87d377fc8a3def4dc10e7 Author: Hollis Blanchard <hollisb@xxxxxxxxxx> Date: Wed Apr 16 23:28:06 2008 -0500 ppc: Export tlb_44x_hwater for KVM PowerPC 440 KVM needs to know how many TLB entries are used for the host kernel linear mapping (it does not modify these mappings when switching between guest and host execution). Signed-off-by: Hollis Blanchard <hollisb@xxxxxxxxxx> Acked-by: Josh Boyer <jwboyer@xxxxxxxxxxxxxxxxxx> Acked-by: Paul Mackerras <paulus@xxxxxxxxx> Signed-off-by: Avi Kivity <avi@xxxxxxxxxxxx> commit 76f7c87902fd2c2de9eb57168adbf9bc5ec2047d Author: Hollis Blanchard <hollisb@xxxxxxxxxx> Date: Tue Apr 15 16:05:42 2008 -0500 KVM: Rename debugfs_dir to kvm_debugfs_dir It's a globally exported symbol now. Signed-off-by: Hollis Blanchard <hollisb@xxxxxxxxxx> Signed-off-by: Avi Kivity <avi@xxxxxxxxxxxx> commit f9b7aab35cc6c3542203354d9fc4ec8572074abc Author: Avi Kivity <avi@xxxxxxxxxxxx> Date: Mon Apr 14 23:46:37 2008 +0300 KVM: x86 emulator: fix lea to really get the effective address We never hit this, since there is currently no reason to emulate lea. Signed-off-by: Avi Kivity <avi@xxxxxxxxxxxx> commit 16286d082d99cb41e16938fa6ba84604229f4b77 Author: Avi Kivity <avi@xxxxxxxxxxxx> Date: Mon Apr 14 14:40:50 2008 +0300 KVM: x86 emulator: fix smsw and lmsw with a memory operand lmsw and smsw were implemented only with a register operand. Extend them to support a memory operand as well. Fixes Windows running some display compatibility test on AMD hosts. Signed-off-by: Avi Kivity <avi@xxxxxxxxxxxx> commit 66b85505736dbd3a3a0ed5ae38c12bb218b231c0 Author: Avi Kivity <avi@xxxxxxxxxxxx> Date: Mon Apr 14 23:27:07 2008 +0300 KVM: x86 emulator: initialize src.val and dst.val for register operands This lets us treat the case where mod == 3 in the same manner as other cases. Signed-off-by: Avi Kivity <avi@xxxxxxxxxxxx> commit a79d2f1805da02d7837ec2240f0093c53272fb3a Author: Avi Kivity <avi@xxxxxxxxxxxx> Date: Mon Apr 14 13:10:21 2008 +0300 KVM: SVM: force a new asid when initializing the vmcb Shutdown interception clears the vmcb, leaving the asid at zero (which is illegal. so force a new asid on vmcb initialization. Signed-off-by: Avi Kivity <avi@xxxxxxxxxxxx> commit e9571ed54b2a290d61b98ad6f369f963159fe6da Author: Marcelo Tosatti <mtosatti@xxxxxxxxxx> Date: Fri Apr 11 15:01:22 2008 -0300 KVM: fix kvm_vcpu_kick vs __vcpu_run race There is a window open between testing of pending IRQ's and assignment of guest_mode in __vcpu_run. Injection of IRQ's can race with __vcpu_run as follows: CPU0 CPU1 kvm_x86_ops->run() vcpu->guest_mode = 0 SET_IRQ_LINE ioctl .. kvm_x86_ops->inject_pending_irq kvm_cpu_has_interrupt() apic_test_and_set_irr() kvm_vcpu_kick if (vcpu->guest_mode) send_ipi() vcpu->guest_mode = 1 So move guest_mode=1 assignment before ->inject_pending_irq, and make sure that it won't reorder after it. Signed-off-by: Marcelo Tosatti <mtosatti@xxxxxxxxxx> Signed-off-by: Avi Kivity <avi@xxxxxxxxxxxx> commit 62d9f0dbc92d7e398fde53fc6021338393522e68 Author: Marcelo Tosatti <mtosatti@xxxxxxxxxx> Date: Fri Apr 11 13:24:45 2008 -0300 KVM: add ioctls to save/store mpstate So userspace can save/restore the mpstate during migration. [avi: export the #define constants describing the value] [christian: add s390 stubs] [avi: ditto for ia64] Signed-off-by: Marcelo Tosatti <mtosatti@xxxxxxxxxx> Signed-off-by: Christian Borntraeger <borntraeger@xxxxxxxxxx> Signed-off-by: Carsten Otte <cotte@xxxxxxxxxx> Signed-off-by: Avi Kivity <avi@xxxxxxxxxxxx> commit 582fb6c03a0e89d05e4efa8a3e4bd09d0942dadc Author: David S. Miller <davem@xxxxxxxxxxxxx> Date: Sat Apr 19 09:16:38 2008 -0500 [SCSI] esp_scsi: Make cur_residue and tot_residue signed. Many of the overflow checks test whether the value has gone negative, and we want to retain such checks. Reported by Julia Lawall. Signed-off-by: David S. Miller <davem@xxxxxxxxxxxxx> Signed-off-by: James Bottomley <James.Bottomley@xxxxxxxxxxxxxxxxxxxxx> commit 077e3bdb9ec34d7cb5751b5be81a4a0f6f0eb5dc Author: Borislav Petkov <petkovbb@xxxxxxxxxxxxxx> Date: Sun Apr 27 15:38:34 2008 +0200 ide-tape: remove tape->merge_stage Get rid of the pipeline merge stage but retain the chrdev req caching functionality by using a merge buffer tape->merge_bh which is flushed in chunks of several blocks at a time. Also, remove last references to pipelining, e.g. typedef idetape_stage_s. Signed-off-by: Borislav Petkov <petkovbb@xxxxxxxxx> Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@xxxxxxxxx> commit 01a63aebe4dcfcbe983c40a475e4650a4ae614de Author: Borislav Petkov <petkovbb@xxxxxxxxxxxxxx> Date: Sun Apr 27 15:38:34 2008 +0200 ide-tape: mv tape->merge_stage_size tape->merge_bh_size This is the size of the merge buffer. Signed-off-by: Borislav Petkov <petkovbb@xxxxxxxxx> Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@xxxxxxxxx> commit d9df937af4f980883d94276000e5af399438e1a9 Author: Borislav Petkov <petkovbb@xxxxxxxxxxxxxx> Date: Sun Apr 27 15:38:34 2008 +0200 ide-tape: mv idetape_empty_write_pipeline ide_tape_flush_merge_buffer Signed-off-by: Borislav Petkov <petkovbb@xxxxxxxxx> Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@xxxxxxxxx> commit ec0fdb01f808e3f0b50378bfabaee4ced41a8fd9 Author: Borislav Petkov <petkovbb@xxxxxxxxxxxxxx> Date: Sun Apr 27 15:38:34 2008 +0200 ide-tape: mv idetape_discard_read_pipeline ide_tape_discard_merge_buffer Also, rename its __-low level helper too. Signed-off-by: Borislav Petkov <petkovbb@xxxxxxxxx> Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@xxxxxxxxx> commit 9798630a75c2c13849aeefcc1ba0559a701b5d95 Author: Borislav Petkov <petkovbb@xxxxxxxxxxxxxx> Date: Sun Apr 27 15:38:34 2008 +0200 ide-tape: make __idetape_discard_read_pipeline() of type void It always returns 0 which has no effect on tape positioning calculation so simplify it by converting its type to void, bringing no functional change to the driver. Signed-off-by: Borislav Petkov <petkovbb@xxxxxxxxx> Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@xxxxxxxxx> commit fd0949e6e84e4e1649d8ea7367e78e72f59bb19f Author: Alexey Dobriyan <adobriyan@xxxxx> Date: Sun Apr 27 15:38:34 2008 +0200 ide: remove now unused ide_pci_create_host_proc() It creates files in proc with obsoleted ->get_info interface. Signed-off-by: Alexey Dobriyan <adobriyan@xxxxxxxxxx> Cc: Andrew Morton <akpm@xxxxxxxx> Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@xxxxxxxxx> commit 19ba7b8f35116dfafcb02bdb745d5015d97d9cb6 Author: Alexey Dobriyan <adobriyan@xxxxx> Date: Sun Apr 27 15:38:33 2008 +0200 ide: remove /proc/ide/ali Bart says: "can be done from user-space and is not especially interesting even when debugging problems (raw PCI config space dump is far more useful)." Signed-off-by: Alexey Dobriyan <adobriyan@xxxxxxxxxx> Cc: Andrew Morton <akpm@xxxxxxxx> Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@xxxxxxxxx> commit d01dbc3b85d57f3ab89be4291d4739152bb1713a Author: Borislav Petkov <petkovbb@xxxxxxxxxxxxxx> Date: Sun Apr 27 15:38:33 2008 +0200 ide-tape: improve buffer pages freeing strategy Instead of freeing pages one by one, free them 2^order-wise. Also, mv __idetape_kfree_stage() to ide_tape_kfree_buffer(). [bart: add updating bh->b_data] Signed-off-by: Borislav Petkov <petkovbb@xxxxxxxxx> Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@xxxxxxxxx> commit a997a4356ba33dcb9c061677d5943794a29489e8 Author: Borislav Petkov <petkovbb@xxxxxxxxxxxxxx> Date: Sun Apr 27 15:38:33 2008 +0200 ide-tape: mv tape->pages_per_stage tape->pages_per_buffer Signed-off-by: Borislav Petkov <petkovbb@xxxxxxxxx> Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@xxxxxxxxx> commit f73850a302de45c7cb6672d0e8b103c1f122b6ae Author: Borislav Petkov <petkovbb@xxxxxxxxxxxxxx> Date: Sun Apr 27 15:38:33 2008 +0200 ide-tape: mv tape->stage_size tape->buffer_size Signed-off-by: Borislav Petkov <petkovbb@xxxxxxxxx> Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@xxxxxxxxx> commit 41aa17069ea8d2b5cd2ca1ef7ff6cdb7c6abec95 Author: Borislav Petkov <petkovbb@xxxxxxxxxxxxxx> Date: Sun Apr 27 15:38:32 2008 +0200 ide-tape: improve buffer allocation strategy Instead of allocating pages for the buffer one by one, take advantage of the buddy alloc system and request them 2^order at a time. This increases the chance for bigger buffer parts to be contigious and reduces loop iteration count. While at it, rename function __idetape_kmalloc_stage() to ide_tape_kmalloc_buffer(). [bart: fold with "ide-tape: fix mem leak" patch to preserve bisectability] Signed-off-by: Borislav Petkov <petkovbb@xxxxxxxxx> Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@xxxxxxxxx> commit 4c3032d8a4d6c97bd6e02bcab524ef2428d89561 Author: Bartlomiej Zolnierkiewicz <bzolnier@xxxxxxxxx> Date: Sun Apr 27 15:38:32 2008 +0200 ide: add struct ide_io_ports (take 3) * Add struct ide_io_ports and use it instead of `unsigned long io_ports[]` in ide_hwif_t. * Rename io_ports[] in hw_regs_t to io_ports_array[]. * Use un-named union for 'unsigned long io_ports_array[]' and 'struct ide_io_ports io_ports' in hw_regs_t. * Remove IDE_*_OFFSET defines. v2: * scc_pata.c build fix from Stephen Rothwell. v3: * Fix ctl_adrr typo in Sparc-specific part of ns87415.c. (Noticed by Andrew Morton) Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@xxxxxxxxx> commit 387750c3bf49c22f6189436032145e2131985076 Author: Bartlomiej Zolnierkiewicz <bzolnier@xxxxxxxxx> Date: Sun Apr 27 15:38:31 2008 +0200 ide: make ide_unregister() take 'ide_hwif_t *' as an argument (take 2) * Make ide_unregister() take 'ide_hwif_t *hwif' instead of 'unsigned int index' (hwif->index) as an argument and update all users accordingly. While at it: * Remove unnecessary checks for hwif != NULL from ide-pnp.c::idepnp_remove() and delkin_cb.c::delkin_cb_remove(). * Remove needless hwif->chipset assignment from scc_pata.c::scc_remove(). v2: * Fixup ide_unregister() documentation. Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@xxxxxxxxx> commit bf64b7a9ddc604883a1f41535d3d7a62bca9ee81 Author: Bartlomiej Zolnierkiewicz <bzolnier@xxxxxxxxx> Date: Sun Apr 27 15:38:31 2008 +0200 ide: sanitize ide_unregister() usage * Remove ide_unregister() call from ide_exit() (host drivers take care of unregistering hwif-s themselves). * Remove ide_unregister() call from probe methods of bast-ide, palm_bk3710, ide-cs and delkin_cb host drivers (ide_find_port() returns only free ide_hwifs[] entries). Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@xxxxxxxxx> commit 16019c35283e99b4b95b8a0757845bc2d0696b20 Author: Bartlomiej Zolnierkiewicz <bzolnier@xxxxxxxxx> Date: Sun Apr 27 15:38:30 2008 +0200 mpc8xx-ide: use ide_find_port() Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@xxxxxxxxx> commit 1dbfeb4bc8fd0276750e5d1d454420f6c2da80e3 Author: Bartlomiej Zolnierkiewicz <bzolnier@xxxxxxxxx> Date: Sun Apr 27 15:38:30 2008 +0200 ide: add "noacpi" / "acpigtf" / "acpionboot" parameters * Rename ide_noacpi{tfs,onboot} to ide_acpi{gtf,onboot} (+ reverse logic). * Move ide_*acpi* variables to ide-acpi.c and remove unnecessary initializers. * Add "noacpi" / "acpigtf" / "acpionboot" parameters. * Obsolete "ide=noacpi" / "ide=acpigtf" / "ide=acpionboot" kernel parameters. Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@xxxxxxxxx> commit 9dcba7f2b7697db787741cf6698bf5c95130ffce Author: Bartlomiej Zolnierkiewicz <bzolnier@xxxxxxxxx> Date: Sun Apr 27 15:38:30 2008 +0200 gayle: add "doubler" parameter * Add "doubler" parameter to enable support for IDE doublers. * Obsolete "ide=doubler" kernel parameter. Cc: Geert Uytterhoeven <geert@xxxxxxxxxxxxxx> Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@xxxxxxxxx> commit 4706a7e03a03d6d206a93a49a0c723dd612cf8e9 Author: Bartlomiej Zolnierkiewicz <bzolnier@xxxxxxxxx> Date: Sun Apr 27 15:38:30 2008 +0200 ide: add "cdrom=" and "chs=" parameters * Add "cdrom=" and "chs=" parameters. * Obsolete "hdx=cdrom" and "hdx=cyls,heads,sects" kernel parameters. Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@xxxxxxxxx> commit 6e87543a94fb2a966c81a61fc91246592f9719da Author: Bartlomiej Zolnierkiewicz <bzolnier@xxxxxxxxx> Date: Sun Apr 27 15:38:30 2008 +0200 ide: add "nodma|noflush|noprobe|nowerr=" parameters * Add "nodma|noflush|noprobe|nowerr=" parameters. * Obsolete "hdx=noprobe|none|nowerr|nodma|noflush" kernel parameters. Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@xxxxxxxxx> commit 207daeaabb5396995ebac63415fab71476b64ca3 Author: Bartlomiej Zolnierkiewicz <bzolnier@xxxxxxxxx> Date: Sun Apr 27 15:38:29 2008 +0200 ide: remove obsoleted "hdx=autotune" kernel parameter * Remove obsoleted "hdx=autotune" kernel parameter (we always auto-tune PIO if possible nowadays). * Remove no longer needed ide_drive_t.autotune flag. Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@xxxxxxxxx> commit e160124ff6868e53511b16412d2ea91f87936be0 Author: Bartlomiej Zolnierkiewicz <bzolnier@xxxxxxxxx> Date: Sun Apr 27 15:38:29 2008 +0200 ide: remove IDE_HFLAG_NO_AUTOTUNE host flag * Don't set IDE_HFLAG_NO_AUTOTUNE host flag in sgiioc4 and icside host drivers - there is no need for it as they don't implement ->set_pio_mode method. * Remove no longer needed IDE_HFLAG_NO_AUTOTUNE host flag. There should be no functional changes caused by this patch. Acked-by: Sergei Shtylyov <sshtylyov@xxxxxxxxxxxxx> Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@xxxxxxxxx> commit bdffe5d2717c41945d75b488cfaa401d166cb3dd Author: Bartlomiej Zolnierkiewicz <bzolnier@xxxxxxxxx> Date: Sun Apr 27 15:38:29 2008 +0200 cmd640: always auto-tune PIO * Default to tuning PIO0 and disabling prefetch prior to probing devices for CONFIG_BLK_DEV_CMD640_ENHANCED=y case. * Always auto-tune PIO. * Remove no longer used retrieve_drive_counts(). Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@xxxxxxxxx> commit 0d28ec7f213eee37855741410a95ec559f9fa87a Author: Bartlomiej Zolnierkiewicz <bzolnier@xxxxxxxxx> Date: Sun Apr 27 15:38:29 2008 +0200 ide: always auto-tune PIO in legacy VLB host drivers Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@xxxxxxxxx> commit 73f1ad8670effa9849c3d42457fa2b58f139e013 Author: Bartlomiej Zolnierkiewicz <bzolnier@xxxxxxxxx> Date: Sun Apr 27 15:38:29 2008 +0200 ide: mark "idebus=" kernel parameter as obsoleted (take 2) We have "vlb|pci_clock=" parameters now. Acked-by: Sergei Shtylyov <sshtylyov@xxxxxxxxxxxxx> Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@xxxxxxxxx> commit ebae41a5a0583fb732c41445df4ac2c41016df74 Author: Bartlomiej Zolnierkiewicz <bzolnier@xxxxxxxxx> Date: Sun Apr 27 15:38:29 2008 +0200 ide: add "vlb|pci_clock=" parameter * Add "vlb_clock=" parameter for specifying VLB clock frequency (in MHz). * Add "pci_clock=" parameter for specifying PCI bus clock frequency (in MHz). While at it: * qd65xx.c: rename {active,recovery}_cycle variables to {act,rec}_cyc. Cc: Alan Cox <alan@xxxxxxxxxxxxxxxxxxx> Acked-by: Sergei Shtylyov <sshtylyov@xxxxxxxxxxxxx> Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@xxxxxxxxx> commit 10569713c78f3c499745651aebc90b0d1c454c28 Author: Borislav Petkov <petkovbb@xxxxxxxxxxxxxx> Date: Sun Apr 27 15:38:28 2008 +0200 ide-tape: remove comments markup from Documentation/ide/ide-tape.txt Signed-off-by: Borislav Petkov <petkovbb@xxxxxxxxx> Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@xxxxxxxxx> commit 4735f22cc10127189a13ce9b1c16fa152a99aaba Author: Borislav Petkov <petkovbb@xxxxxxxxxxxxxx> Date: Sun Apr 27 15:38:28 2008 +0200 ide-tape: remove pipelined mode description from Documentation/ide/ide-tape.txt Signed-off-by: Borislav Petkov <petkovbb@xxxxxxxxx> Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@xxxxxxxxx> commit 5bd50dc6aa842a2b37f68dec73d9e2cc433c2af9 Author: Borislav Petkov <petkovbb@xxxxxxxxxxxxxx> Date: Sun Apr 27 15:38:28 2008 +0200 ide-tape: remove misc references to pipelined operation in the comments Signed-off-by: Borislav Petkov <petkovbb@xxxxxxxxx> Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@xxxxxxxxx> commit c0674bf3b602c71f18ff1772fdfb4e7ea8ffbacc Author: Borislav Petkov <petkovbb@xxxxxxxxxxxxxx> Date: Sun Apr 27 15:38:28 2008 +0200 ide-tape: remove pipelined mode parameters Signed-off-by: Borislav Petkov <petkovbb@xxxxxxxxx> Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@xxxxxxxxx> commit 83042b241601170c95b448267861be10a6025b3c Author: Borislav Petkov <petkovbb@xxxxxxxxxxxxxx> Date: Sun Apr 27 15:38:27 2008 +0200 ide-tape: remove pipeline-specific members from struct ide_tape_obj Bart: - merge "ide-tape: remove pipeline-specific code from idetape_setup" patch - cleanup __idetape_discard_read_pipeline() - cleanup idetape_empty_write_pipeline() - fix 't' assignment in idetape_setup() - fix idetape_blkdev_ioctl() w.r.t. 'nr_stages' Signed-off-by: Borislav Petkov <petkovbb@xxxxxxxxx> Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@xxxxxxxxx> commit 42d5468921e9e9c0a2d13048a2dab09f844e18bc Author: Borislav Petkov <petkovbb@xxxxxxxxxxxxxx> Date: Sun Apr 27 15:38:27 2008 +0200 ide-tape: remove pipelined mode tape control flags [bart: sync patch with current code and fix idetape_init_read()] Signed-off-by: Borislav Petkov <petkovbb@xxxxxxxxx> Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@xxxxxxxxx> commit 0aa4b01e0345bb43450dee4377fc53fb4fd44eb1 Author: Borislav Petkov <petkovbb@xxxxxxxxxxxxxx> Date: Sun Apr 27 15:38:27 2008 +0200 ide-tape: remove remaining pipeline functionality The driver is using now solely its own request queue. - tape->next_stage is always NULL so it is safe to remove all code depending on tape->next_stage != NULL - this patch removes the last place which sets IDETAPE_FLAG_PIPELINE_ACTIVE in tape->flags [bart: add above explanations] Signed-off-by: Borislav Petkov <petkovbb@xxxxxxxxx> Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@xxxxxxxxx> commit ea1ab3d3319b399e2b707c270d2d6077b61183f6 Author: Borislav Petkov <petkovbb@xxxxxxxxxxxxxx> Date: Sun Apr 27 15:38:27 2008 +0200 ide-tape: unwrap idetape_queue_pc_tail() idetape_queue_pc_tail() is a wrapper for its __idetape_queue_pc_tail() counterpart and has no other functionality. Remove it and call the "wrapped" function directly. Signed-off-by: Borislav Petkov <petkovbb@xxxxxxxxx> Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@xxxxxxxxx> commit 189bb3b345f59b11484b43f2717a66824acdc548 Author: Borislav Petkov <petkovbb@xxxxxxxxxxxxxx> Date: Sun Apr 27 15:38:27 2008 +0200 ide-tape: remove pipeline-specific code from idetape_end_request() As a side effect, remove unused idetape_kfree_stage() and idetape_abort_pipeline() [bart: resurrect taking tape->lock + clearing IDETAPE_FLAG_PIPELINE_ACTIVE] Signed-off-by: Borislav Petkov <petkovbb@xxxxxxxxx> Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@xxxxxxxxx> commit 473567f1a4996a49cb5456e55815051a6e6eb3f1 Author: Borislav Petkov <petkovbb@xxxxxxxxxxxxxx> Date: Sun Apr 27 15:38:26 2008 +0200 ide-tape: remove idetape_remove_stage_head() Signed-off-by: Borislav Petkov <petkovbb@xxxxxxxxx> Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@xxxxxxxxx> commit b361acb1083f0b313a4b398de48450f5edb81fe1 Author: Borislav Petkov <petkovbb@xxxxxxxxxxxxxx> Date: Sun Apr 27 15:38:26 2008 +0200 ide-tape: remove idetape_pipeline_size() The computation of the block offset of the the tape position (MTIOCPOS, MTIOCGET) is not influenced by the stages queued in the pipeline anymore but by the size of the current buffer which is going to be sent to the drive. [bart: resurrect deleted idetape_wait_for_pipeline() call] Signed-off-by: Borislav Petkov <petkovbb@xxxxxxxxx> Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@xxxxxxxxx> commit 7f5e72f471763fe2a6e72863a64a2ef459f37835 Author: Borislav Petkov <petkovbb@xxxxxxxxxxxxxx> Date: Sun Apr 27 15:38:26 2008 +0200 ide-tape: remove pipeline-specific code in idetape_space_over_filemarks() Since we don't do pipeline read-ahead anymore, we don't have to look for filemarks we have crossed. Therefore, remove the code chunk that does that and pass on the command to the tape. As a side effect, remove unused idetape_wait_first_stage(). Signed-off-by: Borislav Petkov <petkovbb@xxxxxxxxx> Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@xxxxxxxxx> commit 8646c88f1572512761b33d01467e8643586972ce Author: Borislav Petkov <petkovbb@xxxxxxxxxxxxxx> Date: Sun Apr 27 15:38:26 2008 +0200 ide-tape: remove unused parameter from idetape_copy_stage_from_user Signed-off-by: Borislav Petkov <petkovbb@xxxxxxxxx> Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@xxxxxxxxx> commit 99d74e61ef7e9b0e2123830bc42b4639ee30145a Author: Borislav Petkov <petkovbb@xxxxxxxxxxxxxx> Date: Sun Apr 27 15:38:25 2008 +0200 ide-tape: remove unused parameter from idetape_copy_stage_to_user Signed-off-by: Borislav Petkov <petkovbb@xxxxxxxxx> Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@xxxxxxxxx> commit 5e69bd959d1086f87a603b4ddc6bdb0a130ec7db Author: Borislav Petkov <petkovbb@xxxxxxxxxxxxxx> Date: Sun Apr 27 15:38:25 2008 +0200 ide-tape: remove pipeline-specific code from idetape_add_chrdev_read_request() In order to do away with queueing read requests on the pipeline, several things have to be done: 1. Do not allocate additional pipeline stages in idetape_init_read() until (tape->nr_stages < max_stages) and do only read operation preparations. As a collateral result, idetape_add_stage_tail() becomes unused so remove it. 2. Queue the read request's buffer directly thru idetape_queue_rw_tail(). 3. Remove now unused idetape_kmalloc_stage() and idetape_switch_buffers(). [bart: simplify the original patch] Signed-off-by: Borislav Petkov <petkovbb@xxxxxxxxx> Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@xxxxxxxxx> commit ddfe7a776360f7067e06eee9d8b1ae4d957e6ddf Author: Borislav Petkov <petkovbb@xxxxxxxxxxxxxx> Date: Sun Apr 27 15:38:25 2008 +0200 ide-tape remove pipeline speed/control calculations Pipeline handling calculations in idetape_calculate_speeds() can go since they do not have any effect on other functionality besides: 1. info is only being exported through /proc as a read-only item (controlled_pipeline_head_speed, uncontrolled_pipeline_head_speed) 2. used in idetape_restart_speed_control() which, in turn, is unrelated to other code 3. used only for pipeline frames number accounting (tape->pipeline_head), also unused elsewhere. 4.some variables are: only written to: tape->buffer_head; unused: tape->tape_head, tape->last_tape_head Signed-off-by: Borislav Petkov <petkovbb@xxxxxxxxx> Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@xxxxxxxxx> commit 97c566cebe083b8e500c9b0b5033212c809d9844 Author: Borislav Petkov <petkovbb@xxxxxxxxxxxxxx> Date: Sun Apr 27 15:38:25 2008 +0200 ide-tape: remove pipeline-specific code from idetape_add_chrdev_write_request Refrain from adding more write requests to the pipeline and queue them directly on the device's request queue instead. [bart: re-do for minimal behavior changes] Signed-off-by: Borislav Petkov <petkovbb@xxxxxxxxx> Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@xxxxxxxxx> commit f64eee7bb2819da5506a2db5b6297612a17eb3f8 Author: Borislav Petkov <petkovbb@xxxxxxxxxxxxxx> Date: Sun Apr 27 15:38:25 2008 +0200 ide-tape: remove tape->cache_stage Prior to allocating a new pipeline stage, the code checked for the existence of a cached pipeline stage to use. Do away with and stick to normal pipeline stages only. [bart: keep idetape_kmalloc_stage() for now] Signed-off-by: Borislav Petkov <petkovbb@xxxxxxxxx> Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@xxxxxxxxx> commit cc12175ff2eadb0918d573169af88429440a21ae Author: Bartlomiej Zolnierkiewicz <bzolnier@xxxxxxxxx> Date: Sun Apr 27 15:38:24 2008 +0200 ide: remove obsoleted "hdx=noautotune" kernel parameter Remove obsoleted "hdx=noautotune" kernel parameter (it has been obsoleted since 1 Nov 2004). Then make ide_hwif_t.autotune a single bit flag and remove no longer needed IDE_TUNE_* defines. Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@xxxxxxxxx> commit ef87f8d09639cbe22201c7dfe07586c43b255108 Author: Bartlomiej Zolnierkiewicz <bzolnier@xxxxxxxxx> Date: Sun Apr 27 15:38:24 2008 +0200 ide: remove obsoleted "idex=" kernel parameters * Remove obsoleted "idex=" kernel parameters. * Make probe_* and cmd640_vlb variables static. Cc: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@xxxxxxxxx> commit e460a59751a7e53b549c63d4d308ba73582c8def Author: Bartlomiej Zolnierkiewicz <bzolnier@xxxxxxxxx> Date: Sun Apr 27 15:38:24 2008 +0200 ide: remove obsoleted "idex=reset" kernel parameter Remove obsoleted "idex=reset" kernel parameter (it has been obsoleted since 1 Nov 2004). Then remove corresponding code from ide_probe_port() and no longer used ->reset field from ide_hwif_t. Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@xxxxxxxxx> commit 9dd4cf1fb949f6ba56b67078c09ef1b78f3c9421 Author: Bartlomiej Zolnierkiewicz <bzolnier@xxxxxxxxx> Date: Sun Apr 27 15:38:24 2008 +0200 ide: remove obsoleted "idex=serialize" kernel parameter Remove obsoleted "idex=serialize" kernel parameter (it has been obsoleted since 1 Nov 2004). Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@xxxxxxxxx> commit 9fd91d959f1a19d1bfa46d97cbbbb55641ce26a6 Author: Bartlomiej Zolnierkiewicz <bzolnier@xxxxxxxxx> Date: Sun Apr 27 15:38:23 2008 +0200 ide: add "ignore_cable" parameter (take 2) Add "ignore_cable" parameter: * "ide_core.ignore_cable=[interface_number]" boot option if IDE is built-in (i.e. "ide_core.ignore_cable=1" to force ignoring cable for "ide1") * "ignore_cable=[interface_number]" module parameter (for ide_core module) if IDE is compiled as module v2: * Add ide_port_apply_params() helper - use it in ide_device_add_all() and ide_scan_port(). * Make it possible to later disable ignoring cable detection by passing "[interface_number]:0" to /sys/module/ide_core/parameters/ignore_cable (however sysfs interface is not enabled yet since it needs some other IDE changes to make it work reliable). Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@xxxxxxxxx> commit 9c391bae6a65bd39962877ad7dc000b600757bbe Author: Al Viro <viro@xxxxxxxxxxxxxxxxxx> Date: Sun Apr 27 15:38:23 2008 +0200 ide: fix icside breakage Fallout from commit ac95beedf8bc97b24f9540d4da9952f07221c023 Signed-off-by: Al Viro <viro@xxxxxxxxxxxxxxxxxx> Cc: Russell King <rmk@xxxxxxxxxxxxxxxx> Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@xxxxxxxxx> commit a45352908b88d383bc40e1e4d1a6cc5bbcefc895 Author: Avi Kivity <avi@xxxxxxxxxxxx> Date: Sun Apr 13 17:54:35 2008 +0300 KVM: Rename VCPU_MP_STATE_* to KVM_MP_STATE_* We wish to export it to userspace, so move it into the kvm namespace. Signed-off-by: Avi Kivity <avi@xxxxxxxxxxxx> commit 3d80840d96127401ba6aeadd813c3a15b84e70fe Author: Marcelo Tosatti <mtosatti@xxxxxxxxxx> Date: Fri Apr 11 14:53:26 2008 -0300 KVM: hlt emulation should take in-kernel APIC/PIT timers into account Timers that fire between guest hlt and vcpu_block's add_wait_queue() are ignored, possibly resulting in hangs. Also make sure that atomic_inc and waitqueue_active tests happen in the specified order, otherwise the following race is open: CPU0 CPU1 if (waitqueue_active(wq)) add_wait_queue() if (!atomic_read(pit_timer->pending)) schedule() atomic_inc(pit_timer->pending) Signed-off-by: Marcelo Tosatti <mtosatti@xxxxxxxxxx> Signed-off-by: Avi Kivity <avi@xxxxxxxxxxxx> commit 3564990af1b9f77a63692c1079e9c41af229f066 Author: Joerg Roedel <joerg.roedel@xxxxxxx> Date: Wed Apr 9 16:04:32 2008 +0200 KVM: SVM: do not intercept task switch with NPT When KVM uses NPT there is no reason to intercept task switches. This patch removes the intercept for it in that case. Signed-off-by: Joerg Roedel <joerg.roedel@xxxxxxx> Signed-off-by: Avi Kivity <avi@xxxxxxxxxxxx> commit d4c9ff2d1b78e385471b3f4d80c0596909926ef7 Author: Feng(Eric) Liu <eric.e.liu@xxxxxxxxx> Date: Thu Apr 10 08:47:53 2008 -0400 KVM: Add kvm trace userspace interface This interface allows user a space application to read the trace of kvm related events through relayfs. Signed-off-by: Feng (Eric) Liu <eric.e.liu@xxxxxxxxx> Signed-off-by: Avi Kivity <avi@xxxxxxxxxxxx> commit 048354c8e6bf95e7347f623d8a0da5b89e216405 Author: Avi Kivity <avi@xxxxxxxxxxxx> Date: Fri Apr 11 02:51:52 2008 +0300 KVM: ia64: Stub out kvmtrace Signed-off-by: Avi Kivity <avi@xxxxxxxxxxxx> commit 7732a8d19bdc6ae18f68f9adb47d11c82a3a86cd Author: Avi Kivity <avi@xxxxxxxxxxxx> Date: Fri Apr 11 02:50:40 2008 +0300 KVM: s390: Stub out kvmtrace Signed-off-by: Avi Kivity <avi@xxxxxxxxxxxx> commit 2714d1d3d6be882b97cd0125140fccf9976a460a Author: Feng (Eric) Liu <eric.e.liu@xxxxxxxxx> Date: Thu Apr 10 15:31:10 2008 -0400 KVM: Add trace markers Trace markers allow userspace to trace execution of a virtual machine in order to monitor its performance. Signed-off-by: Feng (Eric) Liu <eric.e.liu@xxxxxxxxx> Signed-off-by: Avi Kivity <avi@xxxxxxxxxxxx> commit 53371b5098543ab09dcb0c7ce31da887dbe58c62 Author: Joerg Roedel <joerg.roedel@xxxxxxx> Date: Wed Apr 9 14:15:30 2008 +0200 KVM: SVM: add intercept for machine check exception To properly forward a MCE occured while the guest is running to the host, we have to intercept this exception and call the host handler by hand. This is implemented by this patch. Signed-off-by: Joerg Roedel <joerg.roedel@xxxxxxx> Signed-off-by: Avi Kivity <avi@xxxxxxxxxxxx> commit 6394b6494c0a352a2db3ea3e891ba7aeea7c1441 Author: Joerg Roedel <joerg.roedel@xxxxxxx> Date: Wed Apr 9 14:15:29 2008 +0200 KVM: SVM: align shadow CR4.MCE with host This patch aligns the host version of the CR4.MCE bit with the CR4 active in the guest. This is necessary to get MCE exceptions when the guest is running. Signed-off-by: Joerg Roedel <joerg.roedel@xxxxxxx> Signed-off-by: Avi Kivity <avi@xxxxxxxxxxxx> commit ec077263b2bb841d973d82342b7fbc07bbad4246 Author: Joerg Roedel <joerg.roedel@xxxxxxx> Date: Wed Apr 9 14:15:28 2008 +0200 KVM: SVM: indent svm_set_cr4 with tabs instead of spaces The svm_set_cr4 function is indented with spaces. This patch replaces them with tabs. Signed-off-by: Joerg Roedel <joerg.roedel@xxxxxxx> Signed-off-by: Avi Kivity <avi@xxxxxxxxxxxx> commit 258ac8e066622df3fef94c8adf32596faae5ab71 Author: Avi Kivity <avi@xxxxxxxxxxxx> Date: Sun Apr 6 14:25:46 2008 +0300 KVM: Register ioctl range Signed-off-by: Avi Kivity <avi@xxxxxxxxxxxx> commit 35149e2129fe34fc8cb5917e1ecf5156b0fa3415 Author: Anthony Liguori <aliguori@xxxxxxxxxx> Date: Wed Apr 2 14:46:56 2008 -0500 KVM: MMU: Don't assume struct page for x86 This patch introduces a gfn_to_pfn() function and corresponding functions like kvm_release_pfn_dirty(). Using these new functions, we can modify the x86 MMU to no longer assume that it can always get a struct page for any given gfn. We don't want to eliminate gfn_to_page() entirely because a number of places assume they can do gfn_to_page() and then kmap() the results. When we support IO memory, gfn_to_page() will fail for IO pages although gfn_to_pfn() will succeed. This does not implement support for avoiding reference counting for reserved RAM or for IO memory. However, it should make those things pretty straight forward. Since we're only introducing new common symbols, I don't think it will break the non-x86 architectures but I haven't tested those. I've tested Intel, AMD, NPT, and hugetlbfs with Windows and Linux guests. [avi: fix overflow when shifting left pfns by adding casts] Signed-off-by: Anthony Liguori <aliguori@xxxxxxxxxx> Signed-off-by: Avi Kivity <avi@xxxxxxxxxxxx> commit fdae862f91728aec6dd8fd62cd2398868c906b6b Author: Xiantao Zhang <xiantao.zhang@xxxxxxxxx> Date: Tue Apr 1 15:08:29 2008 +0800 KVM: ia64: Add a guide about how to create kvm guests on ia64 Guide for creating virtual machine on kvm/ia64. Signed-off-by: Xiantao Zhang <xiantao.zhang@xxxxxxxxx> Signed-off-by: Avi Kivity <avi@xxxxxxxxxxxx> commit b693919ca983e9eb989d89dac5493ef3c5e98e77 Author: Xiantao Zhang <xiantao.zhang@xxxxxxxxx> Date: Fri Mar 28 14:58:47 2008 +0800 KVM: ia64: Enable kvm build for ia64 Update the related Makefile and KConfig for kvm build Signed-off-by: Xiantao Zhang <xiantao.zhang@xxxxxxxxx> Signed-off-by: Avi Kivity <avi@xxxxxxxxxxxx> commit ad86b6c36bbb9c1cac610f1b8a310d87eafea778 Author: Xiantao Zhang <xiantao.zhang@xxxxxxxxx> Date: Tue Apr 1 14:59:30 2008 +0800 KVM: ia64: Add kvm sal/pal virtulization support Some sal/pal calls would be traped to kvm for virtulization from guest firmware. Signed-off-by: Xiantao Zhang <xiantao.zhang@xxxxxxxxx> Signed-off-by: Avi Kivity <avi@xxxxxxxxxxxx> commit 827fa691e41a538bbe941d9c988e07e6abea1648 Author: Xiantao Zhang <xiantao.zhang@xxxxxxxxx> Date: Tue Apr 1 14:58:42 2008 +0800 KVM: ia64: Add guest interruption injection support process.c mainly handle interruption injection, and some faults handling. Signed-off-by: Anthony Xu <anthony.xu@xxxxxxxxx> Signed-off-by: Xiantao Zhang <xiantao.zhang@xxxxxxxxx> Signed-off-by: Avi Kivity <avi@xxxxxxxxxxxx> commit d62998a681f4688605895bb7068d76d25132e3a2 Author: Xiantao Zhang <xiantao.zhang@xxxxxxxxx> Date: Tue Apr 1 14:57:53 2008 +0800 KVM: ia64: Generate offset values for assembly code use asm-offsets.c will generate offset values used for assembly code for some fileds of special structures. Signed-off-by: Anthony Xu <anthony.xu@xxxxxxxxx> Signed-off-by: Xiantao Zhang <xiantao.zhang@xxxxxxxxx> Signed-off-by: Avi Kivity <avi@xxxxxxxxxxxx> commit 7fc86bd9c0830651826d88c65b6aad55086a6e01 Author: Xiantao Zhang <xiantao.zhang@xxxxxxxxx> Date: Tue Apr 1 14:57:09 2008 +0800 KVM: ia64: Add optimization for some virtulization faults optvfault.S Add optimization for some performance-critical virtualization faults. Signed-off-by: Anthony Xu <anthony.xu@xxxxxxxxx> Signed-off-by: Xiantao Zhang <xiantao.zhang@xxxxxxxxx> Signed-off-by: Avi Kivity <avi@xxxxxxxxxxxx> commit 60a07bb9baa83e17d4b540a2f371661ecc353c6c Author: Xiantao Zhang <xiantao.zhang@xxxxxxxxx> Date: Tue Apr 1 16:14:28 2008 +0800 KVM: ia64: Add processor virtulization support vcpu.c provides processor virtualization logic for kvm. Signed-off-by: Anthony Xu <anthony.xu@xxxxxxxxx> Signed-off-by: Xiantao Zhang <xiantao.zhang@xxxxxxxxx> Signed-off-by: Avi Kivity <avi@xxxxxxxxxxxx> commit a793537a970584720347293935a4bb6323791a05 Author: Xiantao Zhang <xiantao.zhang@xxxxxxxxx> Date: Tue Apr 1 14:54:42 2008 +0800 KVM: ia64: Add trampoline for guest/host mode switch trampoline code targets for guest/host world switch. Signed-off-by: Xiantao Zhang <xiantao.zhang@xxxxxxxxx> Signed-off-by: Avi Kivity <avi@xxxxxxxxxxxx> commit e30af4ce7fea3d3a470f8f9996c53564f34e4754 Author: Xiantao Zhang <xiantao.zhang@xxxxxxxxx> Date: Tue Apr 1 14:53:32 2008 +0800 KVM: ia64: Add mmio decoder for kvm/ia64 mmio.c includes mmio decoder, and related mmio logics. Signed-off-by: Anthony Xu <Anthony.xu@xxxxxxxxx> Signed-off-by: Xiantao Zhang <xiantao.zhang@xxxxxxxxx> Signed-off-by: Avi Kivity <avi@xxxxxxxxxxxx> commit fbd4b5621c8db767f78c89d1ac708ac4bb276caf Author: Xiantao Zhang <xiantao.zhang@xxxxxxxxx> Date: Tue Apr 1 14:52:19 2008 +0800 KVM: ia64: Add interruption vector table for vmm vmm_ivt.S includes an ivt for vmm use. Signed-off-by: Anthony Xu <anthony.xu@xxxxxxxxx> Signed-off-by: Xiantao Zhang <xiantao.zhang@xxxxxxxxx> Signed-off-by: Avi Kivity <avi@xxxxxxxxxxxx> commit 964cd94a2ae3b20f9da9bd43b31aac32c4fe9aee Author: Xiantao Zhang <xiantao.zhang@xxxxxxxxx> Date: Tue Apr 1 14:50:59 2008 +0800 KVM: ia64: Add TLB virtulization support vtlb.c includes tlb/VHPT virtulization. Signed-off-by: Anthony Xu <anthony.xu@xxxxxxxxx> Signed-off-by: Xiantao Zhang <xiantao.zhang@xxxxxxxxx> Signed-off-by: Avi Kivity <avi@xxxxxxxxxxxx> commit bb46fb4af160ec7ae6e5102a79a3b2518eaee7af Author: Xiantao Zhang <xiantao.zhang@xxxxxxxxx> Date: Tue Apr 1 14:49:24 2008 +0800 KVM: ia64: VMM module interfaces vmm.c adds the interfaces with kvm/module, and initialize global data area. Signed-off-by: Xiantao Zhang <xiantao.zhang@xxxxxxxxx> Signed-off-by: Avi Kivity <avi@xxxxxxxxxxxx> commit a4f500381ac91969fa4f8b0a4e39e76dbf00a913 Author: Xiantao Zhang <xiantao.zhang@xxxxxxxxx> Date: Tue Apr 1 16:00:24 2008 +0800 KVM: ia64: Add header files for kvm/ia64 kvm_minstate.h : Marcos about Min save routines. lapic.h: apic structure definition. vcpu.h : routions related to vcpu virtualization. vti.h : Some macros or routines for VT support on Itanium. Signed-off-by: Xiantao Zhang <xiantao.zhang@xxxxxxxxx> Signed-off-by: Avi Kivity <avi@xxxxxxxxxxxx> commit b024b79322aad213cd2d4f30c23a6c626a0d5b31 Author: Xiantao Zhang <xiantao.zhang@xxxxxxxxx> Date: Tue Apr 1 15:29:29 2008 +0800 KVM: ia64: Add kvm arch-specific core code for kvm/ia64 kvm_ia64.c is created to handle kvm ia64-specific core logic. Signed-off-by: Xiantao Zhang <xiantao.zhang@xxxxxxxxx> Signed-off-by: Avi Kivity <avi@xxxxxxxxxxxx> commit 1a9c1ac46990194f6b6ddc591c24e385e611fa25 Author: Xiantao Zhang <xiantao.zhang@xxxxxxxxx> Date: Tue Apr 1 14:45:06 2008 +0800 KVM: ia64: Add header files for kvm/ia64 Three header files are added: asm-ia64/kvm.h asm-ia64/kvm_host.h asm-ia64/kvm_para.h Signed-off-by: Xiantao Zhang <xiantao.zhang@xxxxxxxxx> Signed-off-by: Avi Kivity <avi@xxxxxxxxxxxx> commit e235f3450f5bf94b989746163b7791784a78ee05 Author: Xiantao Zhang <xiantao.zhang@xxxxxxxxx> Date: Tue Apr 1 14:42:00 2008 +0800 KVM: ia64: Prepare some structure and routines for kvm use Register structures are defined per SDM. Add three small routines for kernel: ia64_ttag, ia64_loadrs, ia64_flushrs Signed-off-by: Xiantao Zhang <xiantao.zhang@xxxxxxxxx> Signed-off-by: Avi Kivity <avi@xxxxxxxxxxxx> commit c71799c1f404c6e4f34fa64e6be39cd6149e5019 Author: Heiko Carstens <heiko.carstens@xxxxxxxxxx> Date: Fri Apr 4 16:03:34 2008 +0200 KVM: s390: Improve pgste accesses There is no need to use interlocked updates when the rcp lock is held. Therefore the simple bitops variants can be used. This should improve performance. Signed-off-by: Heiko Carstens <heiko.carstens@xxxxxxxxxx> Signed-off-by: Carsten Otte <cotte@xxxxxxxxxx> Signed-off-by: Avi Kivity <avi@xxxxxxxxxxxx> commit f603f0731f43421403160f5f8b12e90f2e51f064 Author: Heiko Carstens <heiko.carstens@xxxxxxxxxx> Date: Fri Apr 4 15:12:40 2008 +0200 KVM: s390: rename stfl to kvm_stfl Temporarily rename this function to avoid merge conflicts and/or dependencies. This function will be removed as soon as git-s390 and kvm.git are finally upstream. Signed-off-by: Heiko Carstens <heiko.carstens@xxxxxxxxxx> Signed-off-by: Carsten Otte <cotte@xxxxxxxxxx> Signed-off-by: Avi Kivity <avi@xxxxxxxxxxxx> commit 7e8e6ab48d78147f69c1ba2d6a362f8d33254468 Author: Heiko Carstens <heiko.carstens@xxxxxxxxxx> Date: Fri Apr 4 15:12:35 2008 +0200 KVM: s390: Fix incorrect return value kvm_arch_vcpu_ioctl_run currently incorrectly always returns 0. Signed-off-by: Heiko Carstens <heiko.carstens@xxxxxxxxxx> Signed-off-by: Carsten Otte <cotte@xxxxxxxxxx> Signed-off-by: Avi Kivity <avi@xxxxxxxxxxxx> commit bed1d1dfc4a458d82bcd258082638cbba860190d Author: Marcelo Tosatti <mtosatti@xxxxxxxxxx> Date: Fri Apr 4 14:56:44 2008 -0300 KVM: MMU: prepopulate guest pages after write-protecting Zdenek reported a bug where a looping "dmsetup status" eventually hangs on SMP guests. The problem is that kvm_mmu_get_page() prepopulates the shadow MMU before write protecting the guest page tables. By doing so, it leaves a window open where the guest can mark a pte as present while the host has shadow cached such pte as "notrap". Accesses to such address will fault in the guest without the host having a chance to fix the situation. Fix by moving the write protection before the pte prefetch. Signed-off-by: Marcelo Tosatti <mtosatti@xxxxxxxxxx> Signed-off-by: Avi Kivity <avi@xxxxxxxxxxxx> commit fcd6dbac9267c1c06a205ad8bb4bd027c0ace7f7 Author: Avi Kivity <avi@xxxxxxxxxxxx> Date: Thu Apr 3 12:02:21 2008 +0300 KVM: MMU: Only mark_page_accessed() if the page was accessed by the guest If the accessed bit is not set, the guest has never accessed this page (at least through this spte), so there's no need to mark the page accessed. This provides more accurate data for the eviction algortithm. Noted by Andrea Arcangeli. Signed-off-by: Avi Kivity <avi@xxxxxxxxxxxx> commit d39f13b0da7fa7f705fbe6c80995205d0380bc7a Author: Izik Eidus <izike@xxxxxxxxxxxx> Date: Sun Mar 30 16:01:25 2008 +0300 KVM: add vm refcounting the main purpose of adding this functions is the abilaty to release the spinlock that protect the kvm list while still be able to do operations on a specific kvm in a safe way. Signed-off-by: Izik Eidus <izike@xxxxxxxxxxxx> Signed-off-by: Avi Kivity <avi@xxxxxxxxxxxx> commit 9c20456a32ce9e82ccda55e12c10016b181d85e5 Author: Joerg Roedel <joerg.roedel@xxxxxxx> Date: Tue Apr 1 16:44:56 2008 +0200 KVM: function declaration parameter name cleanup The kvm_host.h file for x86 declares the functions kvm_set_cr[0348]. In the header file their second parameter is named cr0 in all cases. This patch renames the parameters so that they match the function name. Signed-off-by: Joerg Roedel <joerg.roedel@xxxxxxx> Signed-off-by: Avi Kivity <avi@xxxxxxxxxxxx> commit 3d45830c2b11a9d756faae161742b7d1ec417f7e Author: Avi Kivity <avi@xxxxxxxxxxxx> Date: Tue Mar 25 11:26:13 2008 +0200 KVM: Free apic access page on vm destruction Noticed by Marcelo Tosatti. Signed-off-by: Avi Kivity <avi@xxxxxxxxxxxx> commit 3ee16c814511cd58f956b47b9c7654f57f674688 Author: Izik Eidus <izike@xxxxxxxxxxxx> Date: Sun Mar 30 15:17:21 2008 +0300 KVM: MMU: allow the vm to shrink the kvm mmu shadow caches Allow the Linux memory manager to reclaim memory in the kvm shadow cache. Signed-off-by: Izik Eidus <izike@xxxxxxxxxxxx> Signed-off-by: Avi Kivity <avi@xxxxxxxxxxxx> commit 3200f405a1e8e06c8634f11d33614455baa4e6be Author: Marcelo Tosatti <marcelo@xxxxxxxxx> Date: Sat Mar 29 20:17:59 2008 -0300 KVM: MMU: unify slots_lock usage Unify slots_lock acquision around vcpu_run(). This is simpler and less error-prone. Also fix some callsites that were not grabbing the lock properly. [avi: drop slots_lock while in guest mode to avoid holding the lock for indefinite periods] Signed-off-by: Marcelo Tosatti <mtosatti@xxxxxxxxxx> Signed-off-by: Avi Kivity <avi@xxxxxxxxxxxx> commit 25c5f225beda4fbea878ed8b6203ab4ecc7de2d1 Author: Sheng Yang <sheng.yang@xxxxxxxxx> Date: Fri Mar 28 13:18:56 2008 +0800 KVM: VMX: Enable MSR Bitmap feature MSR Bitmap controls whether the accessing of an MSR causes VM Exit. Eliminating exits on automatically saved and restored MSRs yields a small performance gain. Signed-off-by: Sheng Yang <sheng.yang@xxxxxxxxx> Signed-off-by: Avi Kivity <avi@xxxxxxxxxxxx> commit e976a2b997fc4ad70ccc53acfe62811c4aaec851 Author: Christian Borntraeger <borntraeger@xxxxxxxxxx> Date: Tue Mar 25 18:47:46 2008 +0100 s390: KVM guest: virtio device support, and kvm hypercalls This patch implements kvm guest kernel support for paravirtualized devices and contains two parts: o a basic virtio stub using virtio_ring and external interrupts and hypercalls o full hypercall implementation in kvm_para.h Currently we dont have PCI on s390. Making virtio_pci usable for s390 seems more complicated that providing an own stub. This virtio stub is similar to the lguest one, the memory for the descriptors and the device detection is made via additional mapped memory on top of the guest storage. We use an external interrupt with extint code 0x2603 for host->guest notification. The hypercall definition uses the diag instruction for issuing a hypercall. The parameters are written in R2-R7, the hypercall number is written in R1. This is similar to the system call ABI (svc) which can use R1 for the number and R2-R6 for the parameters. Signed-off-by: Christian Borntraeger <borntraeger@xxxxxxxxxx> Acked-by: Martin Schwidefsky <schwidefsky@xxxxxxxxxx> Signed-off-by: Carsten Otte <cotte@xxxxxxxxxx> Signed-off-by: Avi Kivity <avi@xxxxxxxxxxxx> commit fa5877439d5a062d91c3abd5a690483bbdb4268e Author: Carsten Otte <cotte@xxxxxxxxxx> Date: Tue Mar 25 18:47:44 2008 +0100 s390: KVM guest: detect when running on kvm This patch adds functionality to detect if the kernel runs under the KVM hypervisor. A macro MACHINE_IS_KVM is exported for device drivers. This allows drivers to skip device detection if the systems runs non-virtualized. We also define a preferred console to avoid having the ttyS0, which is a line mode only console. Signed-off-by: Christian Borntraeger <borntraeger@xxxxxxxxxx> Acked-by: Martin Schwidefsky <schwidefsky@xxxxxxxxxx> Signed-off-by: Carsten Otte <cotte@xxxxxxxxxx> Signed-off-by: Avi Kivity <avi@xxxxxxxxxxxx> commit 85f8fffe3c2ab13f13526c46b5471fc22e98ccfe Author: Christian Borntraeger <borntraeger@xxxxxxxxxx> Date: Tue Mar 25 18:47:41 2008 +0100 KVM: s390: update maintainers This patch adds an entry for kvm on s390 to the MAINTAINERS file :-). We intend to push all patches regarding this via Avi's kvm.git. Signed-off-by: Christian Borntraeger <borntraeger@xxxxxxxxxx> Signed-off-by: Carsten Otte <cotte@xxxxxxxxxx> Signed-off-by: Avi Kivity <avi@xxxxxxxxxxxx> commit 5ecee4ba4eb2ada7ece7c41eb08cf7bc51b579e2 Author: Carsten Otte <cotte@xxxxxxxxxx> Date: Tue Mar 25 18:47:38 2008 +0100 KVM: s390: API documentation This patch adds Documentation/s390/kvm.txt, which describes specifics of kvm's user interface that are unique to s390 architecture. Signed-off-by: Carsten Otte <cotte@xxxxxxxxxx> Signed-off-by: Avi Kivity <avi@xxxxxxxxxxxx> commit 77b455f1bcfa0fddb31b8e6f9f2adc246acb4216 Author: Christian Borntraeger <borntraeger@xxxxxxxxxx> Date: Tue Mar 25 18:47:36 2008 +0100 KVM: s390: add kvm to kconfig on s390 This patch adds the virtualization submenu and the kvm option to the kernel config. It also defines HAVE_KVM for 64bit kernels. Acked-by: Martin Schwidefsky <schwidefsky@xxxxxxxxxx> Signed-off-by: Christian Borntraeger <borntraeger@xxxxxxxxxx> Signed-off-by: Carsten Otte <cotte@xxxxxxxxxx> Signed-off-by: Avi Kivity <avi@xxxxxxxxxxxx> commit e28acfea5dd9dbc67c2594cbefc140129dbd0e3f Author: Christian Borntraeger <borntraeger@xxxxxxxxxx> Date: Tue Mar 25 18:47:34 2008 +0100 KVM: s390: intercepts for diagnose instructions This patch introduces interpretation of some diagnose instruction intercepts. Diagnose is our classic architected way of doing a hypercall. This patch features the following diagnose codes: - vm storage size, that tells the guest about its memory layout - time slice end, which is used by the guest to indicate that it waits for a lock and thus cannot use up its time slice in a useful way - ipl functions, which a guest can use to reset and reboot itself In order to implement ipl functions, we also introduce an exit reason that causes userspace to perform various resets on the virtual machine. All resets are described in the principles of operation book, except KVM_S390_RESET_IPL which causes a reboot of the machine. Acked-by: Martin Schwidefsky <martin.schwidefsky@xxxxxxxxxx> Signed-off-by: Christian Borntraeger <borntraeger@xxxxxxxxxx> Signed-off-by: Carsten Otte <cotte@xxxxxxxxxx> Signed-off-by: Avi Kivity <avi@xxxxxxxxxxxx> commit 5288fbf0ef041ba0e8b4dcb2df4536b5e3a48b32 Author: Christian Borntraeger <borntraeger@xxxxxxxxxx> Date: Tue Mar 25 18:47:31 2008 +0100 KVM: s390: interprocessor communication via sigp This patch introduces in-kernel handling of _some_ sigp interprocessor signals (similar to ipi). kvm_s390_handle_sigp() decodes the sigp instruction and calls individual handlers depending on the operation requested: - sigp sense tries to retrieve information such as existence or running state of the remote cpu - sigp emergency sends an external interrupt to the remove cpu - sigp stop stops a remove cpu - sigp stop store status stops a remote cpu, and stores its entire internal state to the cpus lowcore - sigp set arch sets the architecture mode of the remote cpu. setting to ESAME (s390x 64bit) is accepted, setting to ESA/S390 (s390, 31 or 24 bit) is denied, all others are passed to userland - sigp set prefix sets the prefix register of a remote cpu For implementation of this, the stop intercept indication starts to get reused on purpose: a set of action bits defines what to do once a cpu gets stopped: ACTION_STOP_ON_STOP really stops the cpu when a stop intercept is recognized ACTION_STORE_ON_STOP stores the cpu status to lowcore when a stop intercept is recognized Acked-by: Martin Schwidefsky <schwidefsky@xxxxxxxxxx> Signed-off-by: Christian Borntraeger <borntraeger@xxxxxxxxxx> Signed-off-by: Carsten Otte <cotte@xxxxxxxxxx> Signed-off-by: Carsten Otte <cotte@xxxxxxxxxx> Signed-off-by: Avi Kivity <avi@xxxxxxxxxxxx> commit 453423dce2785b8e22077e3b3eeecb4f60fe3470 Author: Christian Borntraeger <borntraeger@xxxxxxxxxx> Date: Tue Mar 25 18:47:29 2008 +0100 KVM: s390: intercepts for privileged instructions This patch introduces in-kernel handling of some intercepts for privileged instructions: handle_set_prefix() sets the prefix register of the local cpu handle_store_prefix() stores the content of the prefix register to memory handle_store_cpu_address() stores the cpu number of the current cpu to memory handle_skey() just decrements the instruction address and retries handle_stsch() delivers condition code 3 "operation not supported" handle_chsc() same here handle_stfl() stores the facility list which contains the capabilities of the cpu handle_stidp() stores cpu type/model/revision and such handle_stsi() stores information about the system topology Acked-by: Martin Schwidefsky <schwidefsky@xxxxxxxxxx> Signed-off-by: Christian Borntraeger <borntraeger@xxxxxxxxxx> Signed-off-by: Heiko Carstens <heiko.carstens@xxxxxxxxxx> Signed-off-by: Carsten Otte <cotte@xxxxxxxxxx> Signed-off-by: Avi Kivity <avi@xxxxxxxxxxxx> commit ba5c1e9b6ceebdc39343cc03eb39f077abd3c571 Author: Carsten Otte <cotte@xxxxxxxxxx> Date: Tue Mar 25 18:47:26 2008 +0100 KVM: s390: interrupt subsystem, cpu timer, waitpsw This patch contains the s390 interrupt subsystem (similar to in kernel apic) including timer interrupts (similar to in-kernel-pit) and enabled wait (similar to in kernel hlt). In order to achieve that, this patch also introduces intercept handling for instruction intercepts, and it implements load control instructions. This patch introduces an ioctl KVM_S390_INTERRUPT which is valid for both the vm file descriptors and the vcpu file descriptors. In case this ioctl is issued against a vm file descriptor, the interrupt is considered floating. Floating interrupts may be delivered to any virtual cpu in the configuration. The following interrupts are supported: SIGP STOP - interprocessor signal that stops a remote cpu SIGP SET PREFIX - interprocessor signal that sets the prefix register of a (stopped) remote cpu INT EMERGENCY - interprocessor interrupt, usually used to signal need_reshed and for smp_call_function() in the guest. PROGRAM INT - exception during program execution such as page fault, illegal instruction and friends RESTART - interprocessor signal that starts a stopped cpu INT VIRTIO - floating interrupt for virtio signalisation INT SERVICE - floating interrupt for signalisations from the system service processor struct kvm_s390_interrupt, which is submitted as ioctl parameter when injecting an interrupt, also carrys parameter data for interrupts along with the interrupt type. Interrupts on s390 usually have a state that represents the current operation, or identifies which device has caused the interruption on s390. kvm_s390_handle_wait() does handle waitpsw in two flavors: in case of a disabled wait (that is, disabled for interrupts), we exit to userspace. In case of an enabled wait we set up a timer that equals the cpu clock comparator value and sleep on a wait queue. [christian: change virtio interrupt to 0x2603] Acked-by: Martin Schwidefsky <schwidefsky@xxxxxxxxxx> Signed-off-by: Heiko Carstens <heiko.carstens@xxxxxxxxxx> Signed-off-by: Carsten Otte <cotte@xxxxxxxxxx> Signed-off-by: Christian Borntraeger <borntraeger@xxxxxxxxxx> Signed-off-by: Avi Kivity <avi@xxxxxxxxxxxx> commit 8f2abe6a1e525e878bdf58f68ccd146d543fde84 Author: Christian Borntraeger <borntraeger@xxxxxxxxxx> Date: Tue Mar 25 18:47:23 2008 +0100 KVM: s390: sie intercept handling This path introduces handling of sie intercepts in three flavors: Intercepts are either handled completely in-kernel by kvm_handle_sie_intercept(), or passed to userspace with corresponding data in struct kvm_run in case kvm_handle_sie_intercept() returns -ENOTSUPP. In case of partial execution in kernel with the need of userspace support, kvm_handle_sie_intercept() may choose to set up struct kvm_run and return -EREMOTE. The trivial intercept reasons are handled in this patch: handle_noop() just does nothing for intercepts that don't require our support at all handle_stop() is called when a cpu enters stopped state, and it drops out to userland after updating our vcpu state handle_validity() faults in the cpu lowcore if needed, or passes the request to userland Acked-by: Martin Schwidefsky <schwidefsky@xxxxxxxxxx> Signed-off-by: Christian Borntraeger <borntraeger@xxxxxxxxxx> Signed-off-by: Carsten Otte <cotte@xxxxxxxxxx> Signed-off-by: Avi Kivity <avi@xxxxxxxxxxxx> commit b0c632db637d68ad39d9f97f452ce176253f5f4e Author: Heiko Carstens <heiko.carstens@xxxxxxxxxx> Date: Tue Mar 25 18:47:20 2008 +0100 KVM: s390: arch backend for the kvm kernel module This patch contains the port of Qumranet's kvm kernel module to IBM zSeries (aka s390x, mainframe) architecture. It uses the mainframe's virtualization instruction SIE to run virtual machines with up to 64 virtual CPUs each. This port is only usable on 64bit host kernels, and can only run 64bit guest kernels. However, running 31bit applications in guest userspace is possible. The following source files are introduced by this patch arch/s390/kvm/kvm-s390.c similar to arch/x86/kvm/x86.c, this implements all arch callbacks for kvm. __vcpu_run calls back into sie64a to enter the guest machine context arch/s390/kvm/sie64a.S assembler function sie64a, which enters guest context via SIE, and switches world before and after that include/asm-s390/kvm_host.h contains all vital data structures needed to run virtual machines on the mainframe include/asm-s390/kvm.h defines kvm_regs and friends for user access to guest register content arch/s390/kvm/gaccess.h functions similar to uaccess to access guest memory arch/s390/kvm/kvm-s390.h header file for kvm-s390 internals, extended by later patches Acked-by: Martin Schwidefsky <schwidefsky@xxxxxxxxxx> Signed-off-by: Christian Borntraeger <borntraeger@xxxxxxxxxx> Signed-off-by: Heiko Carstens <heiko.carstens@xxxxxxxxxx> Signed-off-by: Carsten Otte <cotte@xxxxxxxxxx> Signed-off-by: Avi Kivity <avi@xxxxxxxxxxxx> commit 8a88ac6183975c73c65b45f365f6f3b875c1348b Author: Christian Borntraeger <borntraeger@xxxxxxxxxx> Date: Tue Mar 25 18:47:15 2008 +0100 s390: KVM preparation: address of the 64bit extint parm in lowcore The address 0x11b8 is used by z/VM for pfault and diag 250 I/O to provide a 64 bit extint parameter. virtio uses the same address, so its time to update the lowcore structure. Acked-by: Martin Schwidefsky <schwidefsky@xxxxxxxxxx> Signed-off-by: Christian Borntraeger <borntraeger@xxxxxxxxxx> Signed-off-by: Carsten Otte <cotte@xxxxxxxxxx> Signed-off-by: Avi Kivity <avi@xxxxxxxxxxxx> commit 5b7baf05783b1ac97a510243d7e82293416a7cf6 Author: Christian Borntraeger <borntraeger@xxxxxxxxxx> Date: Tue Mar 25 18:47:12 2008 +0100 s390: KVM preparation: host memory management changes for s390 kvm This patch changes the s390 memory management defintions to use the pgste field for dirty and reference bit tracking of host and guest code. Usually on s390, dirty and referenced are tracked in storage keys, which belong to the physical page. This changes with virtualization: The guest and host dirty/reference bits are defined to be the logical OR of the values for the mapping and the physical page. This patch implements the necessary changes in pgtable.h for s390. There is a common code change in mm/rmap.c, the call to page_test_and_clear_young must be moved. This is a no-op for all architecture but s390. page_referenced checks the referenced bits for the physiscal page and for all mappings: o The physical page is checked with page_test_and_clear_young. o The mappings are checked with ptep_test_and_clear_young and friends. Without pgstes (the current implementation on Linux s390) the physical page check is implemented but the mapping callbacks are no-ops because dirty and referenced are not tracked in the s390 page tables. The pgstes introduces guest and host dirty and reference bits for s390 in the host mapping. These mapping must be checked before page_test_and_clear_young resets the reference bit. Signed-off-by: Heiko Carstens <heiko.carstens@xxxxxxxxxx> Signed-off-by: Christian Borntraeger <borntraeger@xxxxxxxxxx> Acked-by: Martin Schwidefsky <schwidefsky@xxxxxxxxxx> Acked-by: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> Signed-off-by: Carsten Otte <cotte@xxxxxxxxxx> Signed-off-by: Avi Kivity <avi@xxxxxxxxxxxx> commit 402b08622d9ac6e32e25289573272e0f21bb58a7 Author: Carsten Otte <cotte@xxxxxxxxxx> Date: Tue Mar 25 18:47:10 2008 +0100 s390: KVM preparation: provide hook to enable pgstes in user pagetable The SIE instruction on s390 uses the 2nd half of the page table page to virtualize the storage keys of a guest. This patch offers the s390_enable_sie function, which reorganizes the page tables of a single-threaded process to reserve space in the page table: s390_enable_sie makes sure that the process is single threaded and then uses dup_mm to create a new mm with reorganized page tables. The old mm is freed and the process has now a page status extended field after every page table. Code that wants to exploit pgstes should SELECT CONFIG_PGSTE. This patch has a small common code hit, namely making dup_mm non-static. Edit (Carsten): I've modified Martin's patch, following Jeremy Fitzhardinge's review feedback. Now we do have the prototype for dup_mm in include/linux/sched.h. Following Martin's suggestion, s390_enable_sie() does now call task_lock() to prevent race against ptrace modification of mm_users. Signed-off-by: Martin Schwidefsky <schwidefsky@xxxxxxxxxx> Signed-off-by: Carsten Otte <cotte@xxxxxxxxxx> Acked-by: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> Signed-off-by: Avi Kivity <avi@xxxxxxxxxxxx> commit 37817f2982d0f559f90cecc66e150dd9d2c2df05 Author: Izik Eidus <izike@xxxxxxxxxxxx> Date: Mon Mar 24 23:14:53 2008 +0200 KVM: x86: hardware task switching support This emulates the x86 hardware task switch mechanism in software, as it is unsupported by either vmx or svm. It allows operating systems which use it, like freedos, to run as kvm guests. Signed-off-by: Izik Eidus <izike@xxxxxxxxxxxx> Signed-off-by: Avi Kivity <avi@xxxxxxxxxxxx> commit 2e4d2653497856b102c90153f970c9e344ba96c6 Author: Izik Eidus <izike@xxxxxxxxxxxx> Date: Mon Mar 24 19:38:34 2008 +0200 KVM: x86: add functions to get the cpl of vcpu Signed-off-by: Izik Eidus <izike@xxxxxxxxxxxx> Signed-off-by: Avi Kivity <avi@xxxxxxxxxxxx> commit 4c9fc8ef501790732ed035585b491756b75ea4c6 Author: Avi Kivity <avi@xxxxxxxxxxxx> Date: Mon Mar 24 18:15:14 2008 +0200 KVM: VMX: Add module option to disable flexpriority Useful for debugging. Signed-off-by: Avi Kivity <avi@xxxxxxxxxxxx> commit 268fe02ae058c0c5e84ad678d67e5d7b013e664f Author: Avi Kivity <avi@xxxxxxxxxxxx> Date: Sun Mar 23 18:36:30 2008 +0200 KVM: no longer EXPERIMENTAL Long overdue. Signed-off-by: Avi Kivity <avi@xxxxxxxxxxxx> commit 0b49ea8659fd3b5005823e02d2d0a775521770e5 Author: Avi Kivity <avi@xxxxxxxxxxxx> Date: Sun Mar 23 15:06:23 2008 +0200 KVM: MMU: Introduce and use spte_to_page() Encapsulate the pte mask'n'shift in a function. Signed-off-by: Avi Kivity <avi@xxxxxxxxxxxx> commit 855149aaa90016c576a0e684361a34f8047307d0 Author: Izik Eidus <izike@xxxxxxxxxxxx> Date: Thu Mar 20 18:17:24 2008 +0200 KVM: MMU: fix dirty bit setting when removing write permissions When mmu_set_spte() checks if a page related to spte should be release as dirty or clean, it check if the shadow pte was writeble, but in case rmap_write_protect() is called called it is possible for shadow ptes that were writeble to become readonly and therefor mmu_set_spte will release the pages as clean. This patch fix this issue by marking the page as dirty inside rmap_write_protect(). Signed-off-by: Izik Eidus <izike@xxxxxxxxxxxx> Signed-off-by: Avi Kivity <avi@xxxxxxxxxxxx> commit 69a9f69bb24d6d3dbf3d2ba542ddceeda40536d5 Author: Avi Kivity <avi@xxxxxxxxxxxx> Date: Fri Mar 21 12:38:23 2008 +0200 KVM: Move some x86 specific constants and structures to include/asm-x86 Signed-off-by: Avi Kivity <avi@xxxxxxxxxxxx> commit 947da53830690cbd77d7f2b625d0df1f161ffd54 Author: Avi Kivity <avi@xxxxxxxxxxxx> Date: Tue Mar 18 11:05:52 2008 +0200 KVM: MMU: Set the accessed bit on non-speculative shadow ptes If we populate a shadow pte due to a fault (and not speculatively due to a pte write) then we can set the accessed bit on it, as we know it will be set immediately on the next guest instruction. This saves a read-modify-write operation. Signed-off-by: Avi Kivity <avi@xxxxxxxxxxxx> commit 97646202bc3f190dfcb48a3d506ea2445717d392 Author: Christian Borntraeger <borntraeger@xxxxxxxxxx> Date: Wed Mar 12 18:10:45 2008 +0100 KVM: kvm.h: __user requires compiler.h include/linux/kvm.h defines struct kvm_dirty_log to [...] union { void __user *dirty_bitmap; /* one bit per page */ __u64 padding; }; __user requires compiler.h to compile. Currently, this works on x86 only coincidentally due to other include files. This patch makes kvm.h compile in all cases. Signed-off-by: Christian Borntraeger <borntraeger@xxxxxxxxxx> Signed-off-by: Avi Kivity <avi@xxxxxxxxxxxx> commit 1e977aa12dd4f80688b1f243762212e75c6d7fe8 Author: Glauber Costa <gcosta@xxxxxxxxxx> Date: Mon Mar 17 16:08:40 2008 -0300 x86: KVM guest: disable clock before rebooting. This patch writes 0 (actually, what really matters is that the LSB is cleared) to the system time msr before shutting down the machine for kexec. Without it, we can have a random memory location being written when the guest comes back It overrides the functions shutdown, used in the path of kernel_kexec() (sys.c) and crash_shutdown, used in the path of crash_kexec() (kexec.c) Signed-off-by: Glauber Costa <gcosta@xxxxxxxxxx> Signed-off-by: Avi Kivity <avi@xxxxxxxxxxxx> commit 3c62c62502bea24448d4e82aa1f33c7dbca61a32 Author: Glauber Costa <gcosta@xxxxxxxxxx> Date: Mon Mar 17 16:08:39 2008 -0300 x86: make native_machine_shutdown non-static it will allow external users to call it. It is mainly useful for routines that will override its machine_ops field for its own special purposes, but want to call the normal shutdown routine after they're done Signed-off-by: Glauber Costa <gcosta@xxxxxxxxxx> Signed-off-by: Avi Kivity <avi@xxxxxxxxxxxx> commit ed23dc6f5bc950ebbe683dd0bed1d5878230c171 Author: Glauber Costa <gcosta@xxxxxxxxxx> Date: Mon Mar 17 16:08:38 2008 -0300 x86: allow machine_crash_shutdown to be replaced This patch a llows machine_crash_shutdown to be replaced, just like any of the other functions in machine_ops Signed-off-by: Glauber Costa <gcosta@xxxxxxxxxx> Signed-off-by: Avi Kivity <avi@xxxxxxxxxxxx> commit 096d14a3b57e4a87d27be09cc64b4f84660acd08 Author: Marcelo Tosatti <mtosatti@xxxxxxxxxx> Date: Fri Feb 22 12:21:38 2008 -0500 x86: KVM guest: hypercall batching Batch pte updates and tlb flushes in lazy MMU mode. [avi: - adjust to mmu_op - helper for getting para_state without debug warnings] Signed-off-by: Marcelo Tosatti <mtosatti@xxxxxxxxxx> Signed-off-by: Avi Kivity <avi@xxxxxxxxxxxx> commit 1da8a77bdc294acdc37e8504926383b86f72d6be Author: Marcelo Tosatti <mtosatti@xxxxxxxxxx> Date: Fri Feb 22 12:21:37 2008 -0500 x86: KVM guest: hypercall based pte updates and TLB flushes Hypercall based pte updates are faster than faults, and also allow use of the lazy MMU mode to batch operations. Don't report the feature if two dimensional paging is enabled. [avi: - guest/host split - fix 32-bit truncation issues - adjust to mmu_op - adjust to ->release_*() renamed - add ->release_pud()] Signed-off-by: Marcelo Tosatti <mtosatti@xxxxxxxxxx> Signed-off-by: Avi Kivity <avi@xxxxxxxxxxxx> commit 2f333bcb4edd8daef99dabe4e7df8277af73cff1 Author: Marcelo Tosatti <mtosatti@xxxxxxxxxx> Date: Fri Feb 22 12:21:37 2008 -0500 KVM: MMU: hypercall based pte updates and TLB flushes Hypercall based pte updates are faster than faults, and also allow use of the lazy MMU mode to batch operations. Don't report the feature if two dimensional paging is enabled. [avi: - one mmu_op hypercall instead of one per op - allow 64-bit gpa on hypercall - don't pass host errors (-ENOMEM) to guest] [akpm: warning fix on i386] Signed-off-by: Marcelo Tosatti <mtosatti@xxxxxxxxxx> Signed-off-by: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> Signed-off-by: Avi Kivity <avi@xxxxxxxxxxxx> commit 9f81128591ca1e9907f2e7a7b195e33232167d60 Author: Avi Kivity <avi@xxxxxxxxxxxx> Date: Sun Mar 2 14:06:05 2008 +0200 KVM: Provide unlocked version of emulator_write_phys() Signed-off-by: Avi Kivity <avi@xxxxxxxxxxxx> commit 0cf1bfd2737f41e59f974a61eab11af206d2042a Author: Marcelo Tosatti <mtosatti@xxxxxxxxxx> Date: Fri Feb 22 12:21:36 2008 -0500 x86: KVM guest: add basic paravirt support Add basic KVM paravirt support. Avoid vm-exits on IO delays. Signed-off-by: Marcelo Tosatti <mtosatti@xxxxxxxxxx> Signed-off-by: Avi Kivity <avi@xxxxxxxxxxxx> commit a28e4f5a621289fe0d9c8a461b0c256f9e17f3bc Author: Marcelo Tosatti <mtosatti@xxxxxxxxxx> Date: Fri Feb 22 12:21:36 2008 -0500 KVM: add basic paravirt support Add basic KVM paravirt support. Avoid vm-exits on IO delays. Signed-off-by: Marcelo Tosatti <mtosatti@xxxxxxxxxx> Signed-off-by: Avi Kivity <avi@xxxxxxxxxxxx> commit 308b0f239e8d6754b8b903d279e5b5b987e257ac Author: Sheng Yang <sheng.yang@xxxxxxxxx> Date: Thu Mar 13 10:22:26 2008 +0800 KVM: Add reset support for in kernel PIT Separate the reset part and prepare for reset support. Signed-off-by: Sheng Yang <sheng.yang@xxxxxxxxx> Signed-off-by: Avi Kivity <avi@xxxxxxxxxxxx> commit e0f63cb9277b64850854aee301762beeeb463473 Author: Sheng Yang <sheng.yang@xxxxxxxxx> Date: Tue Mar 4 00:50:59 2008 +0800 KVM: Add save/restore supporting of in kernel PIT Signed-off-by: Sheng Yang <sheng.yang@xxxxxxxxx> Signed-off-by: Avi Kivity <avi@xxxxxxxxxxxx> commit 7837699fa6d7adf81f26ab73a5f6897ea1ab9d6a Author: Sheng Yang <sheng.yang@xxxxxxxxx> Date: Mon Jan 28 05:10:22 2008 +0800 KVM: In kernel PIT model The patch moves the PIT model from userspace to kernel, and increases the timer accuracy greatly. [marcelo: make last_injected_time per-guest] Signed-off-by: Sheng Yang <sheng.yang@xxxxxxxxx> Signed-off-by: Marcelo Tosatti <mtosatti@xxxxxxxxxx> Tested-and-Acked-by: Alex Davis <alex14641@xxxxxxxxx> Signed-off-by: Avi Kivity <avi@xxxxxxxxxxxx> commit 4fcaa98267efc4d39ded9b0bc33c6b4a2f62fecd Author: Avi Kivity <avi@xxxxxxxxxxxx> Date: Wed Mar 5 09:33:44 2008 +0200 KVM: Remove pointless desc_ptr #ifdef The desc_struct changes left an unnecessary #ifdef; remove it. Signed-off-by: Avi Kivity <avi@xxxxxxxxxxxx> commit 019960ae9933161c2809fa4ee608ba30d9639fd2 Author: Avi Kivity <avi@xxxxxxxxxxxx> Date: Tue Mar 4 10:44:51 2008 +0200 KVM: VMX: Don't adjust tsc offset forward Most Intel hosts have a stable tsc, and playing with the offset only reduces accuracy. By limiting tsc offset adjustment only to forward updates, we effectively disable tsc offset adjustment on these hosts. Signed-off-by: Avi Kivity <avi@xxxxxxxxxxxx> commit b8688d51bbe4872fbcec751e04369606082ac610 Author: Harvey Harrison <harvey.harrison@xxxxxxxxx> Date: Mon Mar 3 12:59:56 2008 -0800 KVM: replace remaining __FUNCTION__ occurances __FUNCTION__ is gcc-specific, use __func__ Signed-off-by: Harvey Harrison <harvey.harrison@xxxxxxxxx> Signed-off-by: Avi Kivity <avi@xxxxxxxxxxxx> commit 71c4dfafc0932d92cc99c7e839d25174b0ce10a1 Author: Joerg Roedel <joerg.roedel@xxxxxxx> Date: Tue Feb 26 16:49:16 2008 +0100 KVM: detect if VCPU triple faults In the current inject_page_fault path KVM only checks if there is another PF pending and injects a DF then. But it has to check for a pending DF too to detect a shutdown condition in the VCPU. If this is not detected the VCPU goes to a PF -> DF -> PF loop when it should triple fault. This patch detects this condition and handles it with an KVM_SHUTDOWN exit to userspace. Signed-off-by: Joerg Roedel <joerg.roedel@xxxxxxx> Signed-off-by: Avi Kivity <avi@xxxxxxxxxxxx> commit 3e4bb3ac9e0ada5df5f6729648d403ea9f071d10 Author: Xiantao Zhang <xiantao.zhang@xxxxxxxxx> Date: Mon Feb 25 18:52:20 2008 +0800 KVM: Use kzalloc to avoid allocating kvm_regs from kernel stack Since the size of kvm_regs is too big to allocate from kernel stack on ia64, use kzalloc to allocate it. Signed-off-by: Xiantao Zhang <xiantao.zhang@xxxxxxxxx> Signed-off-by: Avi Kivity <avi@xxxxxxxxxxxx> commit 2d3ad1f40c841bd3e97d30d423eea53915d085dc Author: Avi Kivity <avi@xxxxxxxxxxxx> Date: Sun Feb 24 11:20:43 2008 +0200 KVM: Prefix control register accessors with kvm_ to avoid namespace pollution Names like 'set_cr3()' look dangerously close to affecting the host. Signed-off-by: Avi Kivity <avi@xxxxxxxxxxxx> commit 05da45583de9b383dc81dd695fe248431d6c9f2b Author: Marcelo Tosatti <marcelo@xxxxxxxxx> Date: Sat Feb 23 11:44:30 2008 -0300 KVM: MMU: large page support Create large pages mappings if the guest PTE's are marked as such and the underlying memory is hugetlbfs backed. If the largepage contains write-protected pages, a large pte is not used. Gives a consistent 2% improvement for data copies on ram mounted filesystem, without NPT/EPT. Anthony measures a 4% improvement on 4-way kernbench, with NPT. Signed-off-by: Marcelo Tosatti <mtosatti@xxxxxxxxxx> Signed-off-by: Avi Kivity <avi@xxxxxxxxxxxx> commit 2e53d63acba75795aa226febd140f67c58c6a353 Author: Marcelo Tosatti <mtosatti@xxxxxxxxxx> Date: Wed Feb 20 14:47:24 2008 -0500 KVM: MMU: ignore zapped root pagetables Mark zapped root pagetables as invalid and ignore such pages during lookup. This is a problem with the cr3-target feature, where a zapped root table fools the faulting code into creating a read-only mapping. The result is a lockup if the instruction can't be emulated. Signed-off-by: Marcelo Tosatti <mtosatti@xxxxxxxxxx> Cc: Anthony Liguori <aliguori@xxxxxxxxxx> Signed-off-by: Avi Kivity <avi@xxxxxxxxxxxx> commit 847f0ad8cbfa70c1af6948025836dfbd9ed6da1e Author: Alexander Graf <alex@xxxxxxxxx> Date: Thu Feb 21 12:11:01 2008 +0100 KVM: Implement dummy values for MSR_PERF_STATUS Darwin relies on this and ceases to work without. Signed-off-by: Alexander Graf <alex@xxxxxxxxx> Signed-off-by: Avi Kivity <avi@xxxxxxxxxxxx> commit 14af3f3c56103d8c3bb173c255ef5d89fb0c9350 Author: Harvey Harrison <harvey.harrison@xxxxxxxxx> Date: Tue Feb 19 10:25:50 2008 -0800 KVM: sparse fixes for kvm/x86.c In two case statements, use the ever popular 'i' instead of index: arch/x86/kvm/x86.c:1063:7: warning: symbol 'index' shadows an earlier one arch/x86/kvm/x86.c:1000:9: originally declared here arch/x86/kvm/x86.c:1079:7: warning: symbol 'index' shadows an earlier one arch/x86/kvm/x86.c:1000:9: originally declared here Make it static. arch/x86/kvm/x86.c:1945:24: warning: symbol 'emulate_ops' was not declared. Should it be static? Drop the return statements. arch/x86/kvm/x86.c:2878:2: warning: returning void-valued expression arch/x86/kvm/x86.c:2944:2: warning: returning void-valued expression Signed-off-by: Harvey Harrison <harvey.harrison@xxxxxxxxx> Signed-off-by: Avi Kivity <avi@xxxxxxxxxxxx> commit 4866d5e3d59c7831c7fa117c246a39165817db0d Author: Harvey Harrison <harvey.harrison@xxxxxxxxx> Date: Tue Feb 19 10:32:02 2008 -0800 KVM: SVM: make iopm_base static Fixes sparse warning as well. arch/x86/kvm/svm.c:69:15: warning: symbol 'iopm_base' was not declared. Should it be static? Signed-off-by: Harvey Harrison <harvey.harrison@xxxxxxxxx> Signed-off-by: Avi Kivity <avi@xxxxxxxxxxxx> commit 77cd337f2246ae72915538383e8f5a6b7ffb363d Author: Harvey Harrison <harvey.harrison@xxxxxxxxx> Date: Tue Feb 19 10:43:11 2008 -0800 KVM: x86 emulator: fix sparse warnings in x86_emulate.c Nesting __emulate_2op_nobyte inside__emulate_2op produces many shadowed variable warnings on the internal variable _tmp used by both macros. Change the outer macro to use __tmp. Avoids a sparse warning like the following at every call site of __emulate_2op arch/x86/kvm/x86_emulate.c:1091:3: warning: symbol '_tmp' shadows an earlier one arch/x86/kvm/x86_emulate.c:1091:3: originally declared here [18 more warnings suppressed] Signed-off-by: Harvey Harrison <harvey.harrison@xxxxxxxxx> Signed-off-by: Avi Kivity <avi@xxxxxxxxxxxx> commit f11c3a8d84d7bf091bf963edd7104dd4ba6416c3 Author: Amit Shah <amit.shah@xxxxxxxxxxxx> Date: Thu Feb 21 01:00:30 2008 +0530 KVM: Add stat counter for hypercalls Signed-off-by: Amit Shah <amit.shah@xxxxxxxxxxxx> Signed-off-by: Avi Kivity <avi@xxxxxxxxxxxx> commit a5f61300c489e334ddf99781a13a7f8d4b580781 Author: Avi Kivity <avi@xxxxxxxxxxxx> Date: Wed Feb 20 17:57:21 2008 +0200 KVM: Use x86's segment descriptor struct instead of private definition The x86 desc_struct unification allows us to remove segment_descriptor.h. Signed-off-by: Avi Kivity <avi@xxxxxxxxxxxx> commit ef2979bd98dac86ea6a4cd9bdd6820a466108017 Author: Avi Kivity <avi@xxxxxxxxxxxx> Date: Wed Feb 20 12:04:47 2008 +0200 KVM: Increase the number of user memory slots per vm Signed-off-by: Avi Kivity <avi@xxxxxxxxxxxx> commit a988b910ef816ed57e1cecbec14e98e906453f91 Author: Avi Kivity <avi@xxxxxxxxxxxx> Date: Wed Feb 20 11:59:20 2008 +0200 KVM: Add API for determining the number of supported memory slots Signed-off-by: Avi Kivity <avi@xxxxxxxxxxxx> commit edbe6c325da48e707a3b31310c5ff5783cf6c0be Author: Avi Kivity <avi@xxxxxxxxxxxx> Date: Wed Feb 20 11:56:51 2008 +0200 KVM: Increase vcpu count to 16 With NPT support, scalability is much improved. Signed-off-by: Avi Kivity <avi@xxxxxxxxxxxx> commit f725230af9ea03f6cc6f4a90e87aa428df46ec19 Author: Avi Kivity <avi@xxxxxxxxxxxx> Date: Wed Feb 20 11:53:16 2008 +0200 KVM: Add API to retrieve the number of supported vcpus per vm Signed-off-by: Avi Kivity <avi@xxxxxxxxxxxx> commit 7a95727567f0991751c2db774a110b4f8080de7f Author: Harvey Harrison <harvey.harrison@xxxxxxxxx> Date: Tue Feb 19 07:40:41 2008 -0800 KVM: x86 emulator: make register_address_increment and JMP_REL static inlines Change jmp_rel() to a function as well. Signed-off-by: Harvey Harrison <harvey.harrison@xxxxxxxxx> Signed-off-by: Avi Kivity <avi@xxxxxxxxxxxx> commit e4706772ea46e57cf69a7140c40063a21884c8e0 Author: Harvey Harrison <harvey.harrison@xxxxxxxxx> Date: Tue Feb 19 07:40:38 2008 -0800 KVM: x86 emulator: make register_address, address_mask static inlines Signed-off-by: Harvey Harrison <harvey.harrison@xxxxxxxxx> Signed-off-by: Avi Kivity <avi@xxxxxxxxxxxx> commit ddcb2885e2902ebfc422eccd763b02c5ee22d68b Author: Harvey Harrison <harvey.harrison@xxxxxxxxx> Date: Mon Feb 18 11:12:48 2008 -0800 KVM: x86 emulator: add ad_mask static inline Replaces open-coded mask calculation in macros. Signed-off-by: Harvey Harrison <harvey.harrison@xxxxxxxxx> Signed-off-by: Avi Kivity <avi@xxxxxxxxxxxx> commit 790c73f6289a204f858ffdcbe4a2b38e91657ec6 Author: Glauber de Oliveira Costa <gcosta@xxxxxxxxxx> Date: Fri Feb 15 17:52:48 2008 -0200 x86: KVM guest: paravirtualized clocksource This is the guest part of kvm clock implementation It does not do tsc-only timing, as tsc can have deltas between cpus, and it did not seem worthy to me to keep adjusting them. We do use it, however, for fine-grained adjustment. Other than that, time comes from the host. [randy dunlap: add missing include] [randy dunlap: disallow on Voyager or Visual WS] Signed-off-by: Glauber de Oliveira Costa <gcosta@xxxxxxxxxx> Signed-off-by: Randy Dunlap <randy.dunlap@xxxxxxxxxx> Signed-off-by: Avi Kivity <avi@xxxxxxxxxxxx> commit 18068523d3a0b41fcee5b53cdb437a0ab4d65e4b Author: Glauber de Oliveira Costa <gcosta@xxxxxxxxxx> Date: Fri Feb 15 17:52:47 2008 -0200 KVM: paravirtualized clocksource: host part This is the host part of kvm clocksource implementation. As it does not include clockevents, it is a fairly simple implementation. We only have to register a per-vcpu area, and start writing to it periodically. The area is binary compatible with xen, as we use the same shadow_info structure. [marcelo: fix bad_page on MSR_KVM_SYSTEM_TIME] [avi: save full value of the msr, even if enable bit is clear] [avi: clear previous value of time_page] Signed-off-by: Glauber de Oliveira Costa <gcosta@xxxxxxxxxx> Signed-off-by: Marcelo Tosatti <mtosatti@xxxxxxxxxx> Signed-off-by: Avi Kivity <avi@xxxxxxxxxxxx> commit 24e09cbf480a72f9c952af4ca77b159503dca44b Author: Joerg Roedel <joerg.roedel@xxxxxxx> Date: Wed Feb 13 18:58:47 2008 +0100 KVM: SVM: enable LBR virtualization This patch implements the Last Branch Record Virtualization (LBRV) feature of the AMD Barcelona and Phenom processors into the kvm-amd module. It will only be enabled if the guest enables last branch recording in the DEBUG_CTL MSR. So there is no increased world switch overhead when the guest doesn't use these MSRs. Signed-off-by: Joerg Roedel <joerg.roedel@xxxxxxx> Signed-off-by: Markus Rechberger <markus.rechberger@xxxxxxx> Signed-off-by: Avi Kivity <avi@xxxxxxxxxxxx> commit f65c229c3e7743c6654c16b9ec6248466b5eef21 Author: Joerg Roedel <joerg.roedel@xxxxxxx> Date: Wed Feb 13 18:58:46 2008 +0100 KVM: SVM: allocate the MSR permission map per VCPU This patch changes the kvm-amd module to allocate the SVM MSR permission map per VCPU instead of a global map for all VCPUs. With this we have more flexibility allowing specific guests to access virtualized MSRs. This is required for LBR virtualization. Signed-off-by: Joerg Roedel <joerg.roedel@xxxxxxx> Signed-off-by: Markus Rechberger <markus.rechberger@xxxxxxx> Signed-off-by: Avi Kivity <avi@xxxxxxxxxxxx> commit e6101a96c9efb74c98bba6322d4c5ea89e47e0fe Author: Joerg Roedel <joerg.roedel@xxxxxxx> Date: Wed Feb 13 18:58:45 2008 +0100 KVM: SVM: let init_vmcb() take struct vcpu_svm as parameter Change the parameter of the init_vmcb() function in the kvm-amd module from struct vmcb to struct vcpu_svm. Signed-off-by: Joerg Roedel <joerg.roedel@xxxxxxx> Signed-off-by: Markus Rechberger <markus.rechberger@xxxxxxx> Signed-off-by: Avi Kivity <avi@xxxxxxxxxxxx> commit 2e11384c2c6f1ce662b1e5b05ba49b216a052f2a Author: Ryan Harper <ryanh@xxxxxxxxxx> Date: Mon Feb 11 10:26:38 2008 -0600 KVM: VMX: fix typo in VMX header define Looking at Intel Volume 3b, page 148, table 20-11 and noticed that the field name is 'Deliver' not 'Deliever'. Attached patch changes the define name and its user in vmx.c Signed-off-by: Ryan Harper <ryanh@xxxxxxxxxx> Signed-off-by: Avi Kivity <avi@xxxxxxxxxxxx> commit 709ddebf81cb40e3c36c6109a7892e8b93a09464 Author: Joerg Roedel <joerg.roedel@xxxxxxx> Date: Thu Feb 7 13:47:45 2008 +0100 KVM: SVM: add support for Nested Paging This patch contains the SVM architecture dependent changes for KVM to enable support for the Nested Paging feature of AMD Barcelona and Phenom processors. Signed-off-by: Joerg Roedel <joerg.roedel@xxxxxxx> Signed-off-by: Avi Kivity <avi@xxxxxxxxxxxx> commit fb72d1674d860b0c9ef9b66b7f4f01fe5b3d2c00 Author: Joerg Roedel <joerg.roedel@xxxxxxx> Date: Thu Feb 7 13:47:44 2008 +0100 KVM: MMU: add TDP support to the KVM MMU This patch contains the changes to the KVM MMU necessary for support of the Nested Paging feature in AMD Barcelona and Phenom Processors. Signed-off-by: Joerg Roedel <joerg.roedel@xxxxxxx> Signed-off-by: Avi Kivity <avi@xxxxxxxxxxxx> commit cc4b6871e771e76dc1de06adb8aed261a1c66be8 Author: Joerg Roedel <joerg.roedel@xxxxxxx> Date: Thu Feb 7 13:47:43 2008 +0100 KVM: export the load_pdptrs() function to modules The load_pdptrs() function is required in the SVM module for NPT support. Signed-off-by: Joerg Roedel <joerg.roedel@xxxxxxx> Signed-off-by: Avi Kivity <avi@xxxxxxxxxxxx> commit 4d9976bbdc09e08b69fc12fee2042c3528187b32 Author: Joerg Roedel <joerg.roedel@xxxxxxx> Date: Thu Feb 7 13:47:42 2008 +0100 KVM: MMU: make the __nonpaging_map function generic The mapping function for the nonpaging case in the softmmu does basically the same as required for Nested Paging. Make this function generic so it can be used for both. Signed-off-by: Joerg Roedel <joerg.roedel@xxxxxxx> Signed-off-by: Avi Kivity <avi@xxxxxxxxxxxx> commit 1855267210e1a8c9d41fe3a3c7a0d42eca5fb7cd Author: Joerg Roedel <joerg.roedel@xxxxxxx> Date: Thu Feb 7 13:47:41 2008 +0100 KVM: export information about NPT to generic x86 code The generic x86 code has to know if the specific implementation uses Nested Paging. In the generic code Nested Paging is called Two Dimensional Paging (TDP) to avoid confusion with (future) TDP implementations of other vendors. This patch exports the availability of TDP to the generic x86 code. Signed-off-by: Joerg Roedel <joerg.roedel@xxxxxxx> Signed-off-by: Avi Kivity <avi@xxxxxxxxxxxx> commit 6c7dac72d5c7dc0e09512dce865398167be9a8f7 Author: Joerg Roedel <joerg.roedel@xxxxxxx> Date: Thu Feb 7 13:47:40 2008 +0100 KVM: SVM: add module parameter to disable Nested Paging To disable the use of the Nested Paging feature even if it is available in hardware this patch adds a module parameter. Nested Paging can be disabled by passing npt=0 to the kvm_amd module. Signed-off-by: Joerg Roedel <joerg.roedel@xxxxxxx> Signed-off-by: Avi Kivity <avi@xxxxxxxxxxxx> commit e3da3acdb32c1804a5c853feebcc037b7434076f Author: Joerg Roedel <joerg.roedel@xxxxxxx> Date: Thu Feb 7 13:47:39 2008 +0100 KVM: SVM: add detection of Nested Paging feature Let SVM detect if the Nested Paging feature is available on the hardware. Disable it to keep this patch series bisectable. Signed-off-by: Joerg Roedel <joerg.roedel@xxxxxxx> Signed-off-by: Avi Kivity <avi@xxxxxxxxxxxx> commit 33bd6a0b3e8baed6469c8e68ea1b16cb50c4f5af Author: Joerg Roedel <joerg.roedel@xxxxxxx> Date: Thu Feb 7 13:47:38 2008 +0100 KVM: SVM: move feature detection to hardware setup code By moving the SVM feature detection from the each_cpu code to the hardware setup code it runs only once. As an additional advance the feature check is now available earlier in the module setup process. Signed-off-by: Joerg Roedel <joerg.roedel@xxxxxxx> Signed-off-by: Avi Kivity <avi@xxxxxxxxxxxx> commit 9457a712a2f464c4b21bb7f78998775c69673a0c Author: Joerg Roedel <joerg.roedel@xxxxxxx> Date: Thu Jan 31 14:57:40 2008 +0100 KVM: allow access to EFER in 32bit KVM This patch makes the EFER register accessible on a 32bit KVM host. This is necessary to boot 32 bit PAE guests under SVM. Signed-off-by: Joerg Roedel <joerg.roedel@xxxxxxx> Signed-off-by: Avi Kivity <avi@xxxxxxxxxxxx> commit 9f62e19a1107466b9e9501e23a9dd5acb81fdca1 Author: Joerg Roedel <joerg.roedel@xxxxxxx> Date: Thu Jan 31 14:57:39 2008 +0100 KVM: VMX: unifdef the EFER specific code To allow access to the EFER register in 32bit KVM the EFER specific code has to be exported to the x86 generic code. This patch does this in a backwards compatible manner. [avi: add check for EFER-less hosts] Signed-off-by: Joerg Roedel <joerg.roedel@xxxxxxx> Signed-off-by: Avi Kivity <avi@xxxxxxxxxxxx> commit 50a37eb4e05efaa7bac6a948fd4db1a48c728b99 Author: Joerg Roedel <joerg.roedel@xxxxxxx> Date: Thu Jan 31 14:57:38 2008 +0100 KVM: align valid EFER bits with the features of the host system This patch aligns the bits the guest can set in the EFER register with the features in the host processor. Currently it lets EFER.NX disabled if the processor does not support it and enables EFER.LME and EFER.LMA only for KVM on 64 bit hosts. Signed-off-by: Joerg Roedel <joerg.roedel@xxxxxxx> Signed-off-by: Avi Kivity <avi@xxxxxxxxxxxx> commit f2b4b7ddf633ffa24ce7c89c9e0d8a06463484e3 Author: Joerg Roedel <joerg.roedel@xxxxxxx> Date: Thu Jan 31 14:57:37 2008 +0100 KVM: make EFER_RESERVED_BITS configurable for architecture code This patch give the SVM and VMX implementations the ability to add some bits the guest can set in its EFER register. Signed-off-by: Joerg Roedel <joerg.roedel@xxxxxxx> Signed-off-by: Avi Kivity <avi@xxxxxxxxxxxx> commit 0aac03f07b37da96e00371e66973d5ffaae578a4 Author: Andrea Arcangeli <andrea@xxxxxxxxxxxx> Date: Wed Jan 30 19:57:35 2008 +0100 KVM: Disable pagefaults during copy_from_user_inatomic() With CONFIG_PREEMPT=n, this is needed in order to disable the fault-in code from sleeping. Signed-off-by: Andrea Arcangeli <andrea@xxxxxxxxxxxx> Signed-off-by: Avi Kivity <avi@xxxxxxxxxxxx> commit 31bb117eb48f2629e030ca547ca89a1c34150183 Author: Hollis Blanchard <hollisb@xxxxxxxxxx> Date: Mon Jan 28 17:42:34 2008 -0600 KVM: Use CONFIG_PREEMPT_NOTIFIERS around struct preempt_notifier This allows kvm_host.h to be #included even when struct preempt_notifier is undefined. This is needed to build ppc asm-offsets.h. Signed-off-by: Hollis Blanchard <hollisb@xxxxxxxxxx> Signed-off-by: Avi Kivity <avi@xxxxxxxxxxxx> commit 2384d2b32640839a4d4d260ca7c5aa4edbf68d91 Author: Sheng Yang <sheng.yang@xxxxxxxxx> Date: Thu Jan 17 15:14:33 2008 +0800 KVM: VMX: Enable Virtual Processor Identification (VPID) To allow TLB entries to be retained across VM entry and VM exit, the VMM can now identify distinct address spaces through a new virtual-processor ID (VPID) field of the VMCS. [avi: drop vpid_sync_all()] [avi: add "cc" to asm constraints] Signed-off-by: Sheng Yang <sheng.yang@xxxxxxxxx> Signed-off-by: Avi Kivity <avi@xxxxxxxxxxxx> commit adb1ff46754a87f3f6c9e7ee0a92f9a8a183bb38 Author: Avi Kivity <avi@xxxxxxxxxxxx> Date: Thu Jan 24 15:13:08 2008 +0200 KVM: Limit vcpu mmap size to one page on non-x86 The second page is only needed on archs that support pio. Noted by Carsten Otte. Signed-off-by: Avi Kivity <avi@xxxxxxxxxxxx> commit d196e343361c229496adeda42335856da9d057de Author: Avi Kivity <avi@xxxxxxxxxxxx> Date: Thu Jan 24 11:44:11 2008 +0200 KVM: MMU: Decouple mmio from shadow page tables Currently an mmio guest pte is encoded in the shadow pagetable as a not-present trapping pte, with the SHADOW_IO_MARK bit set. However nothing is ever done with this information, so maintaining it is a useless complication. This patch moves the check for mmio to before shadow ptes are instantiated, so the shadow code is never invoked for ptes that reference mmio. The code is simpler, and with future work, can be made to handle mmio concurrently. Signed-off-by: Avi Kivity <avi@xxxxxxxxxxxx> commit 1d6ad2073e5354912291277c606a57fd37330f04 Author: Avi Kivity <avi@xxxxxxxxxxxx> Date: Wed Jan 23 22:26:09 2008 +0200 KVM: x86 emulator: group decoding for group 1 instructions Opcodes 0x80-0x83 Signed-off-by: Avi Kivity <avi@xxxxxxxxxxxx> commit 09566765efd034feba45611f9d0ae9a702f8bb1d Author: Avi Kivity <avi@xxxxxxxxxxxx> Date: Wed Jan 23 18:14:23 2008 +0200 KVM: Only x86 has pio Signed-off-by: Avi Kivity <avi@xxxxxxxxxxxx> commit 5c5027425ec23ded452879ee5d0775a9a90fb9bf Author: Jan Engelhardt <jengelh@xxxxxxxxxxxxxxx> Date: Tue Jan 22 20:46:14 2008 +0100 KVM: constify function pointer tables Signed-off-by: Jan Engelhardt <jengelh@xxxxxxxxxxxxxxx> Signed-off-by: Avi Kivity <avi@xxxxxxxxxxxx> commit d95058a1a7170ae2af2939cbdab0ff5d5e005238 Author: Avi Kivity <avi@xxxxxxxxxxxx> Date: Fri Jan 18 13:36:50 2008 +0200 KVM: x86 emulator: add group 7 decoding This adds group decoding for opcode 0x0f 0x01 (group 7). Signed-off-by: Avi Kivity <avi@xxxxxxxxxxxx> commit fd60754e4ffa992586346dd56451723b4c096626 Author: Avi Kivity <avi@xxxxxxxxxxxx> Date: Fri Jan 18 13:12:26 2008 +0200 KVM: x86 emulator: Group decoding for groups 4 and 5 Add group decoding support for opcode 0xfe (group 4) and 0xff (group 5). Signed-off-by: Avi Kivity <avi@xxxxxxxxxxxx> commit 7d858a19efe5844a98e060931570359b70dea6d1 Author: Avi Kivity <avi@xxxxxxxxxxxx> Date: Fri Jan 18 12:58:04 2008 +0200 KVM: x86 emulator: Group decoding for group 3 This adds group decoding support for opcodes 0xf6, 0xf7 (group 3). Signed-off-by: Avi Kivity <avi@xxxxxxxxxxxx> commit 43bb19cd3398d3f544d8e2d6ed6c5c5d7b4e5819 Author: Avi Kivity <avi@xxxxxxxxxxxx> Date: Fri Jan 18 12:46:50 2008 +0200 KVM: x86 emulator: group decoding for group 1A This adds group decode support for opcode 0x8f. Signed-off-by: Avi Kivity <avi@xxxxxxxxxxxx> commit e09d082c03e137015bc0a17ca77e4b9dca08a5d7 Author: Avi Kivity <avi@xxxxxxxxxxxx> Date: Fri Jan 18 12:38:59 2008 +0200 KVM: x86 emulator: add support for group decoding Certain x86 instructions use bits 3:5 of the byte following the opcode as an opcode extension, with the decode sometimes depending on bits 6:7 as well. Add support for this in the main decoding table rather than an ad-hock adaptation per opcode. Signed-off-by: Avi Kivity <avi@xxxxxxxxxxxx> commit 1ae0a13def678876b9acfb5ac1e2cf7d5d45a60d Author: Dong, Eddie <eddie.dong@xxxxxxxxx> Date: Mon Jan 7 13:20:25 2008 +0200 KVM: MMU: Simplify hash table indexing Signed-off-by: Yaozu (Eddie) Dong <eddie.dong@xxxxxxxxx> Signed-off-by: Avi Kivity <avi@xxxxxxxxxxxx> commit 489f1d6526ab68ca1842398fa3ae95c597fe3d32 Author: Dong, Eddie <eddie.dong@xxxxxxxxx> Date: Mon Jan 7 11:14:20 2008 +0200 KVM: MMU: Update shadow ptes on partial guest pte writes A guest partial guest pte write will leave shadow_trap_nonpresent_pte in spte, which generates a vmexit at the next guest access through that pte. This patch improves this by reading the full guest pte in advance and thus being able to update the spte and eliminate the vmexit. This helps pae guests which use two 32-bit writes to set a single 64-bit pte. [truncation fix by Eric] Signed-off-by: Yaozu (Eddie) Dong <eddie.dong@xxxxxxxxx> Signed-off-by: Feng (Eric) Liu <eric.e.liu@xxxxxxxxx> Signed-off-by: Avi Kivity <avi@xxxxxxxxxxxx> commit 20430214cc0073dc7e817b032e32ae2ae54b4911 Author: Dmitry Torokhov <dmitry.torokhov@xxxxxxxxx> Date: Sun Apr 27 00:10:11 2008 -0400 Input: xpad - fix build failure If both CONFIG_JOYSTICK_XPAD_FF and CONFIG_JOYSTICK_XPAD_LEDS are unset xpad_bulk_out is not defined and build fails. Move it out of the #ifdef block so it is always defined. Reported-by: Ingo Molnar <mingo@xxxxxxx> Signed-off-by: Dmitry Torokhov <dtor@xxxxxxx> commit 7f424a8b08c26dc14ac5c17164014539ac9a5c65 Author: Peter Zijlstra <peterz@xxxxxxxxxxxxx> Date: Fri Apr 25 17:39:01 2008 +0200 fix idle (arch, acpi and apm) and lockdep OK, so 25-mm1 gave a lockdep error which made me look into this. The first thing that I noticed was the horrible mess; the second thing I saw was hacks like: 71e93d15612c61c2e26a169567becf088e71b8ff The problem is that arch idle routines are somewhat inconsitent with their IRQ state handling and instead of fixing _that_, we go paper over the problem. So the thing I've tried to do is set a standard for idle routines and fix them all up to adhere to that. So the rules are: idle routines are entered with IRQs disabled idle routines will exit with IRQs enabled Nearly all already did this in one form or another. Merge the 32 and 64 bit bits so they no longer have different bugs. As for the actual lockdep warning; __sti_mwait() did a plainly un-annotated irq-enable. Signed-off-by: Peter Zijlstra <a.p.zijlstra@xxxxxxxxx> Tested-by: Bob Copeland <me@xxxxxxxxxxxxxxx> Signed-off-by: Ingo Molnar <mingo@xxxxxxx> commit ed4d3c1061d6f367a4ef5e1656c25af3314fe2b7 Author: Yevgeny Petrilin <yevgenyp@xxxxxxxxxxxxxx> Date: Fri Apr 25 14:52:32 2008 -0700 mlx4_core: Add helper to move QP to ready-to-send Avoid duplicating code in ethernet and FC modules. Signed-off-by: Yevgeny Petrilin <yevgenyp@xxxxxxxxxxxxxx> Signed-off-by: Roland Dreier <rolandd@xxxxxxxxx> commit 38ae6a535470b959df67ded6798fc542bb212e19 Author: Yevgeny Petrilin <yevgenyp@xxxxxxxxxxxxxx> Date: Fri Apr 25 14:27:08 2008 -0700 mlx4_core: Add HW queues allocation helpers Wrap doorbell, buffer and MTT allocation in helper functions for ethernet and FC modules to use. Signed-off-by: Yevgeny Petrilin <yevgenyp@xxxxxxxxxxxxxx> Signed-off-by: Roland Dreier <rolandd@xxxxxxxxx> commit e19166d5df10be0ea404c4e346cf6be93bfb1d63 Author: Jeff Garzik <jeff@xxxxxxxxxx> Date: Fri Apr 18 19:22:52 2008 -0400 [SCSI] aha152x, eata, u14-34f: minor irq handler cleanups - remove pointless casts from void* - remove needless references to 'irq' function argument, when that information is already stored somewhere in a driver-private struct. - where the 'irq' function argument is known never to be used, rename it to 'dummy' to make this more obvious - remove always-false tests for dev_id==NULL - remove always-true tests for 'irq == host_struct->irq' - replace per-irq lookup functions and tables with a direct reference to data object obtained via 'dev_id' function argument, passed from request_irq() This change's main purpose is to prepare for the patchset in jgarzik/misc-2.6.git#irq-remove, that explores removal of the never-used 'irq' argument in each interrupt handler. Signed-off-by: Jeff Garzik <jgarzik@xxxxxxxxxx> Signed-off-by: James Bottomley <James.Bottomley@xxxxxxxxxxxxxxxxxxxxx> commit 8911c9e3343c647b59727b47b10feca7ee9ac9c3 Author: Sergei Shtylyov <sshtylyov@xxxxxxxxxxxxx> Date: Fri Apr 18 23:39:03 2008 +0400 [SCSI] aic79xx: fix MMIO for PPC 44x platforms The driver stores the PCI resource address into 'u_long' variable before calling ioremap_nocache() on it. This warrants kernel oops when the registers are accessed on PPC 44x platforms which (being 32-bit) have PCI memory space mapped beyond 4 GB. The arch/ppc/ kernel has a fixup in ioremap() that helps create an illusion that the PCI memory resources are mapped below 4 GB, but arch/powerpc/ code got rid of this trick, having instead CONFIG_RESOURCES_64BIT enabled. Signed-off-by: Sergei Shtylyov <sshtylyov@xxxxxxxxxxxxx> Signed-off-by: James Bottomley <James.Bottomley@xxxxxxxxxxxxxxxxxxxxx> commit 448504130f18bc9d8d10ba045775c906abd01438 Author: Sergei Shtylyov <sshtylyov@xxxxxxxxxxxxx> Date: Fri Apr 18 23:30:45 2008 +0400 [SCSI] aic7xxx: fix MMIO for PPC 44x platforms The driver stores the PCI resource address into 'u_long' variable before calling ioremap_nocache() on it. This warrants kernel oops when the registers are accessed on PPC 44x platforms which (being 32-bit) have PCI memory space mapped beyond 4 GB. The arch/ppc/ kernel has a fixup in ioremap() that helps create an illusion that the PCI memory resources are mapped below 4 GB, but arch/powerpc/ code got rid of this trick, having instead CONFIG_RESOURCES_64BIT enabled. Signed-off-by: Sergei Shtylyov <sshtylyov@xxxxxxxxxxxxx> Signed-off-by: James Bottomley <James.Bottomley@xxxxxxxxxxxxxxxxxxxxx> commit be0d67680d524981dd65c661efe3c9cbd52a684f Author: Denys Vlasenko <vda.linux@xxxxxxxxxxxxxx> Date: Sun Mar 23 04:41:22 2008 +0100 [SCSI] aic7xxx, aic79xx: deinline functions Deinlines and moves big functions from .h to .c files. Adds prototypes for ahc_lookup_scb and ahd_lookup_scb to .h files. Signed-off-by: Denys Vlasenko <vda.linux@xxxxxxxxxxxxxx> Signed-off-by: James Bottomley <James.Bottomley@xxxxxxxxxxxxxxxxxxxxx> commit 31d1e340f0e8d53804d737571b2f2bb28a74ecc5 Author: Roland Dreier <rolandd@xxxxxxxxx> Date: Wed Apr 23 11:55:45 2008 -0700 RDMA/nes: Remove volatile qualifier from struct nes_hw_cq.cq_vbase Remove the volatile qualifier from the cq_vbase member of struct nes_hw_cq, and add an rmb() in the one place where it looks like access order might make a difference. As usual, removing a volatile qualifier in a declaration is actually a bug fix, since a volatile qualifier is not sufficient to make sure that aggressively out-of-order CPUs don't reorder things and cause incorrect results. For example, a CPU might speculatively execute reads of other cqe fields before the NIC hardware has written those fields and before it has set the NES_CQE_VALID bit (even though those reads come after the test of the NES_CQE_VALID bit in program order), but then when the CPU actually executes the conditional test of the NES_CQE_VALID, the bit has been set, and the CPU will proceed with the results of the earlier speculative execution and end up using bogus data. This also gets rid of the warning: drivers/infiniband/hw/nes/nes_verbs.c: In function 'nes_destroy_cq': drivers/infiniband/hw/nes/nes_verbs.c:1978: warning: passing argument 3 of 'pci_free_consistent' discards qualifiers from pointer target type Signed-off-by: Roland Dreier <rolandd@xxxxxxxxx> commit f5b3a096b138940f283907debe9bde6c6f40ebf3 Author: Vladimir Sokolovsky <vlad@xxxxxxxxxxxxxx> Date: Wed Apr 23 11:55:45 2008 -0700 mlx4_core: CQ resizing should pass a 0 opcode modifier to MODIFY_CQ The call to mlx4_MODIFY_CQ() had a typo so that mlx4_cq_resize() was actually asking the FW to modify a CQ's interrupt moderation rather than asking it to resize a CQ. Signed-off-by: Vladimir Sokolovsky <vlad@xxxxxxxxxxxxxx> Signed-off-by: Roland Dreier <rolandd@xxxxxxxxx> commit 6296883ca4cd52dafb45f191d24102e28ded38f2 Author: Yevgeny Petrilin <yevgenyp@xxxxxxxxxxxxxx> Date: Wed Apr 23 11:55:45 2008 -0700 mlx4_core: Move kernel doorbell management into core In addition to mlx4_ib, there will be ethernet and FC consumers of mlx4_core, so move the code for managing kernel doorbells into the core module to avoid having to duplicate this multiple times. Signed-off-by: Yevgeny Petrilin <yevgenyp@xxxxxxxxxxxxxx> Signed-off-by: Roland Dreier <rolandd@xxxxxxxxx> commit 14fb05b3497351fbeb514381bcd227d84e115bd9 Author: Joachim Fenkes <fenkes@xxxxxxxxxx> Date: Wed Apr 23 11:55:45 2008 -0700 IB/ehca: Bump version number to 0026 Signed-off-by: Joachim Fenkes <fenkes@xxxxxxxxxx> Signed-off-by: Roland Dreier <rolandd@xxxxxxxxx> commit 0455e36d81db76f5f4acb68a820da43adfa7ccec Author: Joachim Fenkes <fenkes@xxxxxxxxxx> Date: Wed Apr 23 11:55:45 2008 -0700 IB/ehca: Make some module parameters bool, update descriptions Signed-off-by: Joachim Fenkes <fenkes@xxxxxxxxxx> Signed-off-by: Roland Dreier <rolandd@xxxxxxxxx> commit a7607c9b1112b498c3044c9e5bc68fdb4985f93e Author: Joachim Fenkes <fenkes@xxxxxxxxxx> Date: Wed Apr 23 11:55:45 2008 -0700 IB/ehca: Remove mr_largepage parameter Always enable large page support; didn't seem to cause problems for anyone. Signed-off-by: Joachim Fenkes <fenkes@xxxxxxxxxx> Signed-off-by: Roland Dreier <rolandd@xxxxxxxxx> commit 4da27d6d5b92c8fe4b3a3e5bcf42606d9e4a6fc8 Author: Joachim Fenkes <fenkes@xxxxxxxxxx> Date: Wed Apr 23 11:55:45 2008 -0700 IB/ehca: Move high-volume debug output to higher debug levels Signed-off-by: Joachim Fenkes <fenkes@xxxxxxxxxx> Signed-off-by: Roland Dreier <rolandd@xxxxxxxxx> commit 863fb09fbf1eb74f56ea02184a62165056aa29cb Author: Joachim Fenkes <fenkes@xxxxxxxxxx> Date: Wed Apr 23 11:55:45 2008 -0700 IB/ehca: Prevent posting of SQ WQEs if QP not in RTS ...as required by IB Spec, C10-29. Signed-off-by: Joachim Fenkes <fenkes@xxxxxxxxxx> Signed-off-by: Roland Dreier <rolandd@xxxxxxxxx> commit bc7b3a36ba02e4053ca38653e6a753082d9add03 Author: Shirley Ma <mashirle@xxxxxxxxxx> Date: Wed Apr 23 11:55:45 2008 -0700 IPoIB: Handle 4K IB MTU for UD (datagram) mode This patch enables IPoIB to use 4K UD messages (when the underlying device and fabrics support a 4K MTU) by using two scatter buffers when PAGE_SIZE is less than or equal to thhe HCA IB MTU size. The first buffer is for IPoIB header + GRH header, and the second buffer is the IPoIB payload, which is 4K-4. Signed-off-by: Shirley Ma <xma@xxxxxxxxxx> Signed-off-by: Roland Dreier <rolandd@xxxxxxxxx> commit bc5698f3ecc9587e1edb343a2878f8d228c49e0e Author: Chien Tung <ctung@xxxxxxxxxxxxx> Date: Wed Apr 23 11:55:45 2008 -0700 RDMA/nes: Fix adapter reset after PXE boot After PXE boot, the iw_nes driver does a full reset to ensure the card is in a clean state. However, it doesn't wait for firmware to complete its work before issuing a port reset to enable the ports, which leads to problems bringing up the ports. The solution is to wait for firmware to complete its work before proceeding with port reset. This bug was flagged by Roland Dreier <rolandd@xxxxxxxxx>. Cc: <stable@xxxxxxxxxx> Signed-off-by: Chien Tung <ctung@xxxxxxxxxxxxx> Signed-off-by: Roland Dreier <rolandd@xxxxxxxxx> commit e447703123d817b3f802c6eb69171d5342c8832e Author: Roland Dreier <rolandd@xxxxxxxxx> Date: Wed Apr 23 11:55:43 2008 -0700 RDMA/nes: Print IPv4 addresses in a readable format Use NIPQUAD_FMT instead of printing raw 32-bit hex quantities in debugging output. Acked-by: Glenn Streiff <gstreiff@xxxxxxxxxxxxx> Signed-off-by: Roland Dreier <rolandd@xxxxxxxxx> commit 2bd01c5d2ed04838d50548cb7b955505a20ac0bd Author: Roland Dreier <rolandd@xxxxxxxxx> Date: Wed Apr 23 11:52:18 2008 -0700 RDMA/nes: Use print_mac() to format ethernet addresses for printing Removing open-coded MAC formats shrinks the source and the generated code too, eg on x86-64: add/remove: 0/0 grow/shrink: 0/4 up/down: 0/-103 (-103) function old new delta make_cm_node 932 912 -20 nes_netdev_set_mac_address 427 406 -21 nes_netdev_set_multicast_list 1148 1124 -24 nes_probe 2349 2311 -38 Acked-by: Glenn Streiff <gstreiff@xxxxxxxxxxxxx> Signed-off-by: Roland Dreier <rolandd@xxxxxxxxx> commit 93c20a59af4624aedf53f8320606b355aa951bc1 Author: FUJITA Tomonori <fujita.tomonori@xxxxxxxxxxxxx> Date: Sat Apr 19 00:43:15 2008 +0900 [SCSI] scsi_transport_sas: fix the lifetime of sas bsg objects scsi_transport_sas calls blk_cleanup_queue too early for bsg queues. If a user holds a sas_host, end_device, or expander device open, remove the device, then send a request to it, we get a kernel crash. We need to call blk_cleanup_queue in the release callback as we do with scsi devices. This patch moves blk_cleanup_queue to sas_expander_release and sas_end_device_release from sas_bsg_remove. sas_host can't use the release callback in struct device so use bsg's release callback. Signed-off-by: FUJITA Tomonori <fujita.tomonori@xxxxxxxxxxxxx> Signed-off-by: James Bottomley <James.Bottomley@xxxxxxxxxxxxxxxxxxxxx> commit 97f46ae45c70857e459b7f8df1fc2807e7bd90a9 Author: FUJITA Tomonori <fujita.tomonori@xxxxxxxxxxxxx> Date: Sat Apr 19 00:43:14 2008 +0900 [SCSI] bsg: add release callback support This patch adds release callback support, which is called when a bsg device goes away. bsg_register_queue() takes a pointer to a callback function. This feature is useful for stuff like sas_host that can't use the release callback in struct device. If a caller doesn't need bsg's release callback, it can call bsg_register_queue() with NULL pointer (e.g. scsi devices can use release callback in struct device so they don't need bsg's callback). With this patch, bsg uses kref for refcounts on bsg devices instead of get/put_device in fops->open/release. bsg calls put_device and the caller's release callback (if it was registered) in kref_put's release. Signed-off-by: FUJITA Tomonori <fujita.tomonori@xxxxxxxxxxxxx> Signed-off-by: James Bottomley <James.Bottomley@xxxxxxxxxxxxxxxxxxxxx> commit 643eb2d932c97a0583381629d632d486934cf7ee Author: James Bottomley <James.Bottomley@xxxxxxxxxxxxxxxxxxxxx> Date: Sat Mar 22 22:42:27 2008 -0500 [SCSI] rework scsi_target allocation The current target allocation code registeres each possible target with sysfs; it will be deleted again if no useable LUN on this target was found. This results in a string of 'target add/target remove' uevents. Based on a patch by Hannes Reinecke <hare@xxxxxxx> this patch reworks the target allocation code so that only uevents for existing targets are sent. The sysfs registration is split off from the existing scsi_target_alloc() into a in a new scsi_add_target() function, which should be called whenever an existing target is found. Only then a uevent is sent, so we'll be generating events for existing targets only. Signed-off-by: James Bottomley <James.Bottomley@xxxxxxxxxxxxxxxxxxxxx> commit f7120a4f75168df3c02efacd10403a4ba0bcb29d Author: Hannes Reinecke <hare@xxxxxxx> Date: Tue Mar 18 14:32:28 2008 +0100 [SCSI] use default attributes for scsi_host This patch removes the unused sysfs attibute overwriting logic for the scsi host attibutes, and plugs them into the driver core default attribute creation. Signed-off-by: Hannes Reinecke <hare@xxxxxxx> Signed-off-by: Kay Sievers <kay.sievers@xxxxxxxx> Signed-off-by: James Bottomley <James.Bottomley@xxxxxxxxxxxxxxxxxxxxx> commit 352f6bb422bd31a80b4a0f1c3f19b6993df2508c Author: James Bottomley <James.Bottomley@xxxxxxxxxxxxxxxxxxxxx> Date: Thu Mar 20 20:57:02 2008 -0500 [SCSI] scsi_transport_spi: fix the attribute settings We now take advantage of the mode_t return of is_valid, and also update the attributes when the target is configured. Signed-off-by: James Bottomley <James.Bottomley@xxxxxxxxxxxxxxxxxxxxx> commit 0f4238958d28044b335644b69df6071cdb04b5ce Author: James Bottomley <James.Bottomley@xxxxxxxxxxxxxxxxxxxxx> Date: Thu Mar 20 20:47:52 2008 -0500 [SCSI] sysfs: make group is_valid return a mode_t We have a problem in scsi_transport_spi in that we need to customise not only the visibility of the attributes, but also their mode. Fix this by making the is_visible() callback return a mode, with 0 indicating is not visible. Also add a sysfs_update_group() API to allow us to change either the visibility or mode of the files at any time on the fly. Acked-by: Kay Sievers <kay.sievers@xxxxxxxx> Signed-off-by: James Bottomley <James.Bottomley@xxxxxxxxxxxxxxxxxxxxx> commit bbd1ae412c9eb09ae7bb11cfaf7018a2367d493f Author: Hannes Reinecke <hare@xxxxxxx> Date: Tue Mar 18 14:32:28 2008 +0100 [SCSI] qla2xxx, lfpc: Rename 'state' attribute to 'link_state' lpfc and qla2xxx overwrite the standard 'state' attribute with custom callbacks. So rename the custom attributes to 'link_state' and retain the original meaning of the 'state' attribute. Signed-off-by: Hannes Reinecke <hare@xxxxxxx> Acked-by: Andrew Vasquez <andrew.vasquez@xxxxxxxxxx> Acked-by: James Smart <James.Smart@xxxxxxxxxx> Signed-off-by: James Bottomley <James.Bottomley@xxxxxxxxxxxxxxxxxxxxx> commit b0ed43360fdca227048d88a08290365cb681c1a8 Author: Hannes Reinecke <hare@xxxxxxx> Date: Tue Mar 18 14:32:28 2008 +0100 [SCSI] add scsi_host and scsi_target to scsi_bus This patch implements scsi_host and scsi_target device types and adds both to the scsi_bus. Signed-off-by: Hannes Reinecke <hare@xxxxxxx> Signed-off-by: Kay Sievers <kay.sievers@xxxxxxxx> Signed-off-by: James Bottomley <James.Bottomley@xxxxxxxxxxxxxxxxxxxxx> commit cb6b7f40630f94126233194847a86bf5501fb63c Author: James Bottomley <James.Bottomley@xxxxxxxxxxxxxxxxxxxxx> Date: Sat Mar 15 13:01:40 2008 -0500 [SCSI] ses: fix up functionality after class_device->device conversion ses uses an unusual two level class hierarchy which broke in this conversion. Fix it up still with a two level hierarchy, but this time let the ses device manage the links to and from the real device in the enclosure. Signed-off-by: James Bottomley <James.Bottomley@xxxxxxxxxxxxxxxxxxxxx> commit 7d15d6a4dc08dfd456d834e33ef6c1d798fb2edc Author: James Bottomley <James.Bottomley@xxxxxxxxxxxxxxxxxxxxx> Date: Fri Mar 14 14:12:43 2008 -0700 [SCSI] st: fix up after class_device removal There's a change in the SCSI tree that adds another class_device, so change it to an ordinary device [jejb: this one got rebased until it's basically cosmetic only] Cc: Kai Makisara <Kai.Makisara@xxxxxxxxxxx> Signed-off-by: James Bottomley <James.Bottomley@xxxxxxxxxxxxxxxxxxxxx> -- To unsubscribe from this list: send the line "unsubscribe linux-scsi" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html