Hi, Anthony,
checking your patch, I saw a call trace on booting Xen. It is attached
to this e-mail.
Now it became easy to understand hyperprivop codes but it seemed that
the codes related to vdso should not be removed. The concrete patch
that worked fine is also attached.
Regards,
Hiroya
Xu, Anthony wrote:
remove the requirement (vpsr.ic==0) from hyperprivop
There are two reasons for this.
1. make xen-parse code more readable.
2. a little bit performance improvement.
This patch must be applied after vcpu_get_psr fix patch.
Regards,
Anthony
------------------------------------------------------------------------
_______________________________________________
Xen-ia64-devel mailing list
Xen-ia64-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-ia64-devel
Loading.: Xen
Starting: Xen
ELILO boot:
Uncompressing Linux... |/-\|/-\|/-\|/-\|/-\|/-\|/-\|/-\|/-\|/-\|/-\|/-done
Loading file
initrd-2.6.16.33-xen.img-test-inakoshi...|/-\|/-\|/-\|/-\|/-\|/-\|/-\|/-\|/-\|/-\|/-\|/-\|/-\|/-\|/-\|/-\|/-\|/-\|/-\|/-\|/done
Loading file
vmlinuz-2.6.16.33-xen-test-inakoshi...|/-\|/-\|/-\|/-\|/-\|/-\|/-\|/-\|/-\|/-\|/-\|/-\|/-\|/-\|/-\|/-\|/-\|/-\|/-\|/-\|/-\|/-\|/-\|/-\|/-\|/-\|/-\|/-\|/-\|/-\|/-\|/-\|/-\|/-\|/-\|/-\|/-\|/-\|/-\|/-\|/-\|/-\|/-\|/-\|/-\|/-\|/-\|/-\|/-\|/-\|/-\|/-\|/-\|/-\|/-\|/-\|/-\|/-\|/-\|/-\|/-\|/-\|/-\|/-\|/-\|/-\|/-\|/-\|/-\|/-\|/-\|/-\|/-\|/-\|/-\|/-\|/-\|/-\|/-\|/-\|/-\|/-\|/-\|/-\|/-\|/-\|/-\|/-\|/-\|/-\|/-\|/-\|/-\|/-\|/-\|/-done
Uncompressing... done
__ __ _____ ___ _ _ _
\ \/ /___ _ __ |___ / / _ \ _ _ _ __ ___| |_ __ _| |__ | | ___
\ // _ \ '_ \ |_ \| | | |__| | | | '_ \/ __| __/ _` | '_ \| |/ _ \
/ \ __/ | | | ___) | |_| |__| |_| | | | \__ \ || (_| | |_) | | __/
/_/\_\___|_| |_| |____(_)___/ \__,_|_| |_|___/\__\__,_|_.__/|_|\___|
http://www.cl.cam.ac.uk/netos/xen
University of Cambridge Computer Laboratory
Xen version 3.0-unstable (inakoshi@xxxxxxxxxxxxxxxxxxxx) (gcc version 3.4.6
20060404 (Red Hat 3.4.6-3)) Fri Dec 22 13:34:31 JST 2006
Latest ChangeSet: Wed Dec 20 14:55:02 2006 -0700 13107:80c5b5914b79
(XEN) Xen command line: BOOT_IMAGE=scsi0:\EFI\xen\xen.gz-test-inakoshi
com2=115200,8n1 console=com2 sched=credit tbuf_size=128 maxcpus=4
dom0_vcpus_pin
(XEN) xen image pstart: 0x4000000, xenheap pend: 0x8000000
(XEN) Xen patching physical address access by offset: 0x0
(XEN) find_memory: efi_memmap_walk returns max_page=7ffed
(XEN) Before xen_heap_start: f0000000041aaa00
(XEN) After xen_heap_start: f0000000041c0000
(XEN) Init boot pages: 0x10000c0 -> 0x4000000.
(XEN) Init boot pages: 0x8000000 -> 0x7f708000.
(XEN) Init boot pages: 0x7fe58000 -> 0x7ff20000.
(XEN) Init boot pages: 0x180000000 -> 0x1fd96b000.
(XEN) Init boot pages: 0x1fe7fa270 -> 0x1fedf0010.
(XEN) Init boot pages: 0x1fedf0070 -> 0x1fedf3f4b.
(XEN) Init boot pages: 0x1fedf3fcd -> 0x1fedf7000.
(XEN) Init boot pages: 0x1fef3bec2 -> 0x1fef4c010.
(XEN) Init boot pages: 0x1fef4c940 -> 0x1ffe10000.
(XEN) Init boot pages: 0x1ffe80000 -> 0x1fffb4000.
(XEN) System RAM: 4071MB (4168784kB)
(XEN) size of virtual frame_table: 10240kB
(XEN) virtual machine to physical table: f3ffffffffc00098 size: 2080kB
(XEN) max_page: 0x7ffed
(XEN) allocating frame table/mpt table at mfn 0.
(XEN) Domain heap initialised: DMA width 30 bits
(XEN) Xen heap: 62MB (63744kB)
(XEN) ACPI: RSDP (v002 INTEL ) @
0x000000007ff72000
(XEN) ACPI: XSDT (v001 INTEL SR870BN4 0x01072002 MSFT 0x00010013) @
0x000000007ff72090
(XEN) ACPI: FADT (v003 INTEL SR870BN4 0x01072002 MSFT 0x00010013) @
0x000000007ff72138
(XEN) ACPI: MADT (v001 INTEL SR870BN4 0x01072002 MSFT 0x00010013) @
0x000000007ff72230
(XEN) ACPI: DSDT (v001 Intel SR870BN4 0x00000000 INTL 0x20030918) @
0x0000000000000000
(XEN) SAL 3.20: Intel Corp SR870BN4
version 3.0
(XEN) SAL Platform features: BusLock
(XEN) SAL: AP wakeup using external interrupt vector 0xf0
(XEN) cpu package is Multi-Core capable: number of cores=2
(XEN) cpu package is Multi-Threading capable: number of siblings=2
(XEN) avail:0x3170074000000000,
status:0x74000000000,control:0x3170000000000000, vm?0x10000000000
(XEN) WARNING: no opcode provided from hardware(0)!!!
(XEN) vm buffer size: 1048576, order: 6
(XEN) cpu_init: current=f00000000410c000
(XEN) vm_buffer: 0xf000000007e00000
(XEN) vhpt_init: vhpt paddr=0x1fede0000, end=0x1fedeffff
(XEN) iosapic_system_init: Disabling PC-AT compatible 8259 interrupts
(XEN) ACPI: Local APIC address e8000000fee00000
(XEN) ACPI: LSAPIC (acpi_id[0x00] lsapic_id[0xc4] lsapic_eid[0x18] enabled)
(XEN) CPU 0 (0xc418) enabled (BSP)
(XEN) ACPI: LSAPIC (acpi_id[0x01] lsapic_id[0xc6] lsapic_eid[0x18] disabled)
(XEN) CPU 1 (0xc618) disabled
(XEN) ACPI: LSAPIC (acpi_id[0x02] lsapic_id[0xc1] lsapic_eid[0x18] enabled)
(XEN) CPU 2 (0xc118) enabled
(XEN) ACPI: LSAPIC (acpi_id[0x03] lsapic_id[0xc3] lsapic_eid[0x18] disabled)
(XEN) CPU 3 (0xc318) disabled
(XEN) ACPI: LSAPIC (acpi_id[0x04] lsapic_id[0xc5] lsapic_eid[0x18] enabled)
(XEN) CPU 4 (0xc518) enabled
(XEN) ACPI: LSAPIC (acpi_id[0x05] lsapic_id[0xc7] lsapic_eid[0x18] disabled)
(XEN) CPU 5 (0xc718) disabled
(XEN) ACPI: LSAPIC (acpi_id[0x06] lsapic_id[0xc0] lsapic_eid[0x98] disabled)
(XEN) CPU 6 (0xc098) disabled
(XEN) ACPI: LSAPIC (acpi_id[0x07] lsapic_id[0xc2] lsapic_eid[0x98] disabled)
(XEN) CPU 7 (0xc298) disabled
(XEN) ACPI: LSAPIC (acpi_id[0x08] lsapic_id[0xc4] lsapic_eid[0x98] disabled)
(XEN) CPU 8 (0xc498) disabled
(XEN) ACPI: LSAPIC (acpi_id[0x09] lsapic_id[0xc6] lsapic_eid[0x98] disabled)
(XEN) CPU 9 (0xc698) disabled
(XEN) ACPI: LSAPIC (acpi_id[0x0a] lsapic_id[0xc1] lsapic_eid[0x98] disabled)
(XEN) CPU 10 (0xc198) disabled
(XEN) ACPI: LSAPIC (acpi_id[0x0b] lsapic_id[0xc3] lsapic_eid[0x98] disabled)
(XEN) CPU 11 (0xc398) disabled
(XEN) ACPI: LSAPIC (acpi_id[0x0c] lsapic_id[0xc5] lsapic_eid[0x98] disabled)
(XEN) CPU 12 (0xc598) disabled
(XEN) ACPI: LSAPIC (acpi_id[0x0d] lsapic_id[0xc7] lsapic_eid[0x98] disabled)
(XEN) CPU 13 (0xc798) disabled
(XEN) ACPI: LSAPIC (acpi_id[0x0e] lsapic_id[0xc0] lsapic_eid[0x18] enabled)
(XEN) CPU 14 (0xc018) enabled
(XEN) ACPI: LSAPIC (acpi_id[0x0f] lsapic_id[0xc2] lsapic_eid[0x18] disabled)
(XEN) CPU 15 (0xc218) disabled
(XEN) ACPI: IOSAPIC (id[0x0] address[00000000fec00000] gsi_base[0])
(XEN) ACPI: IOSAPIC (id[0x1] address[00000000fec10000] gsi_base[24])
(XEN) ACPI: IOSAPIC (id[0x2] address[00000000fec20000] gsi_base[48])
(XEN) ACPI: IOSAPIC (id[0x3] address[00000000fec30000] gsi_base[72])
(XEN) ACPI: IOSAPIC (id[0x4] address[00000000fec40000] gsi_base[96])
(XEN) ACPI: IOSAPIC (id[0x5] address[00000000fec50000] gsi_base[120])
(XEN) ACPI: IOSAPIC (id[0x6] address[00000000fec60000] gsi_base[144])
(XEN) ACPI: PLAT_INT_SRC (low level type[0x3] id[0x00c4] eid[0x18]
iosapic_vector[0x1e] global_irq[0x16]
(XEN) PLATFORM int CPEI (0x3): GSI 22 (level, low) -> CPU 0 (0xc418) vector 30
(XEN) ACPI: INT_SRC_OVR (bus 0 bus_irq 9 global_irq 9 high level)
(XEN) register_intr: changing vector 39 from IO-SAPIC-edge to IO-SAPIC-level
(XEN) 4 CPUs available, 16 CPUs total
(XEN) MCA related initialization done
(XEN) Using scheduler: SMP Credit Scheduler (credit)
(XEN) CPU 0: base freq=199.461MHz, ITC ratio=7/4, ITC freq=349.056MHz
(XEN) Time init:
(XEN) .... System Time: 1558751ns
(XEN) .... scale: 2DD67925D
(XEN) Boot processor id 0x0/0xc418
(XEN) num_online_cpus=1, max_cpus=4
(XEN) cpu_init: current=f000000007c98000
(XEN) vhpt_init: vhpt paddr=0x1fef50000, end=0x1fef5ffff
(XEN) CPU 1: synchronized ITC with CPU 0 (last diff 0 cycles, maxerr 145 cycles)
(XEN) CPU 1: base freq=199.461MHz, ITC ratio=7/4, ITC freq=349.056MHz
(XEN) cpu_init: current=f000000007c90000
(XEN) vhpt_init: vhpt paddr=0x1ffe00000, end=0x1ffe0ffff
(XEN) CPU 2: synchronized ITC with CPU 0 (last diff 0 cycles, maxerr 146 cycles)
(XEN) CPU 2: base freq=199.461MHz, ITC ratio=7/4, ITC freq=349.056MHz
(XEN) cpu_init: current=f000000007c88000
(XEN) vhpt_init: vhpt paddr=0x1fffa0000, end=0x1fffaffff
(XEN) CPU 3: synchronized ITC with CPU 0 (last diff 0 cycles, maxerr 145 cycles)
(XEN) CPU 3: base freq=199.461MHz, ITC ratio=7/4, ITC freq=349.056MHz
(XEN) Brought up 4 CPUs
(XEN) Total of 4 processors activated (1.05 BogoMIPS).
(XEN) perfmon: added sampling format xenoprof_format
(XEN) xenoprof: using perfmon.
(XEN) perfmon: version 2.0 IRQ 238
(XEN) perfmon: Montecito PMU detected, 27 PMCs, 35 PMDs, 12 counters (47 bits)
(XEN) Maximum number of domains: 63; 18 RID bits per domain
(XEN) domain.c:470: arch_domain_create:470 domain 0 pervcpu_vhpt 1
(XEN) tlb_track_allocate_entries:69 allocated 256 num_entries 256 num_free 256
(XEN) tlb_track_create:115 hash 0xf0000001fe7fc000 hash_size 512
(XEN) ### domain f000000007c80080: rid=40000-80000 mp_rid=1000
(XEN) arch_domain_create: domain=f000000007c80080
(XEN) *** LOADING DOMAIN 0 ***
(XEN) METAPHYSICAL MEMORY ARRANGEMENT:
(XEN) Kernel image: 4000000->516e788
(XEN) Entry address: 400ff20
(XEN) Init. ramdisk: 1fab8000 len 144ec2
(XEN) Start info.: 5170000->5174000
(XEN) Dom0 max_vcpus=1
(XEN) Dom0: 0xf000000007c80080
(XEN) enable lsapic entry: 0xf00000007ff7225c
(XEN) DISABLE lsapic entry: 0xf00000007ff72274
(XEN) DISABLE lsapic entry: 0xf00000007ff7228c
(XEN) DISABLE lsapic entry: 0xf00000007ff72304
(XEN) ACPI_INTERRUPT_CPEI disabled for Domain0
(XEN) Domain0 EFI passthrough: MPS=0x7ff71000 ACPI 2.0=0x7ff72000
ACPI=0x7ff73000 SMBIOS=0xf0000
(XEN) dom mem: type=13, attr=0x8000000000000008,
range=[0x0000000000000000-0x0000000000001000) (4KB)
(XEN) dom mem: type=10, attr=0x8000000000000008,
range=[0x0000000000001000-0x0000000000002000) (4KB)
(XEN) dom mem: type= 6, attr=0x8000000000000008,
range=[0x0000000000002000-0x0000000000003000) (4KB)
(XEN) dom mem: type= 7, attr=0x0000000000000009,
range=[0x0000000000003000-0x0000000000007000) (16KB)
(XEN) dom mem: type= 7, attr=0x0000000000000009,
range=[0x0000000000007000-0x0000000000009000) (8KB)
(XEN) dom mem: type= 7, attr=0x0000000000000009,
range=[0x0000000000009000-0x0000000000082000) (484KB)
(XEN) dom mem: type= 6, attr=0x8000000000000009,
range=[0x0000000000082000-0x0000000000084000) (8KB)
(XEN) dom mem: type= 7, attr=0x0000000000000009,
range=[0x0000000000084000-0x0000000000085000) (4KB)
(XEN) dom mem: type= 7, attr=0x0000000000000009,
range=[0x0000000000085000-0x00000000000a0000) (108KB)
(XEN) dom mem: type= 5, attr=0x8000000000000009,
range=[0x00000000000c0000-0x0000000000100000) (256KB)
(XEN) dom mem: type= 7, attr=0x0000000000000008,
range=[0x0000000000100000-0x0000000020000000) (511MB)
(XEN) dom mem: type= 5, attr=0x8000000000000009,
range=[0x000000007f70a000-0x000000007fb00000) (3MB)
(XEN) dom mem: type= 5, attr=0x8000000000000009,
range=[0x000000007fe00000-0x000000007fe58000) (352KB)
(XEN) dom mem: type= 6, attr=0x8000000000000009,
range=[0x000000007ff20000-0x0000000080000000) (896KB)
(XEN) dom mem: type=11, attr=0x0000000000000001,
range=[0x00000000fe000000-0x00000000ff000000) (16MB)
(XEN) dom mem: type= 6, attr=0x8000000000000001,
range=[0x00000000ff000000-0x0000000100000000) (16MB)
(XEN) dom mem: type= 5, attr=0x8000000000000009,
range=[0x00000001ffe12000-0x00000001ffe7e000) (432KB)
(XEN) dom mem: type= 6, attr=0x8000000000000009,
range=[0x00000001fffb4000-0x0000000200000000) (304KB)
(XEN) dom mem: type=11, attr=0x8000000000000001,
range=[0x00000ffff8000000-0x00000ffffc000000) (64MB)
(XEN) dom mem: type=12, attr=0x8000000000000001,
range=[0x00000ffffc000000-0x0000100000000000) (64MB)
(XEN) Scrubbing Free RAM: ...................................done.
(XEN) Xen trace buffers: initialised
(XEN) Std. Loglevel: Errors and warnings
(XEN) Guest Loglevel: Nothing (Rate-limited: Errors and warnings)
(XEN) *** Serial input -> DOM0 (type 'CTRL-a' three times to switch input to
Xen).
(XEN) vcpu_get_lrr0: Unmasked interrupts unsupported
(XEN) vcpu_get_lrr1: Unmasked interrupts unsupported
(XEN) Domain set shared_info_va to 0xfffffffffff00000
(XEN) __assign_domain_page:872 WARNING can't assign page domain
0xf000000007c80080 id 0
(XEN) already assigned pte_val 0x00100000ff000761
(XEN) mpaddr 0x00000000ff000000 physaddr 0x00000000ff000000 flags 0x2
(XEN) Linux version 2.6.16.33-xen (inakoshi@xxxxxxxxxxxxxxxxxxxxxxxxxx) (gcc
version 3.4.6 20060404 (Red Hat 3.4.6-3)) #2 SMP Fri Dec 22 13:57:16 JST 2006
(XEN) EFI v1.00 by Xen/ia64: SALsystab=0x2178 MPS=0x7ff71000 ACPI
2.0=0x7ff72000 ACPI=0x7ff73000 SMBIOS=0xf0000
(XEN) Initial ramdisk at: 0xe00000001fab8000 (1330882 bytes)
(XEN) SAL 0.1: Xen/ia64 Xen/ia64 version 0.0
(XEN) SAL: AP wakeup using external interrupt vector 0xf3
(XEN) xen_pal_emulator: UNIMPLEMENTED PAL CALL 42!!!!
(XEN) No logical to physical processor mapping available
(XEN) vcpu_set_itc: Setting ar.itc is currently disabled
(XEN) (this message is only displayed one)
(XEN) ACPI: Local APIC address c0000000fee00000
(XEN) WARN: GSI 3 in use by Xen.
(XEN) iosapic_register_platform_irq(): invalid int type 0xff
(XEN) 1 CPUs available, 16 CPUs total
(XEN) Running on Xen! start_info_pfn=0x145c nr_pages=32768 flags=0x3
(XEN) SMP: Allowing 16 CPUs, 15 hotplug CPUs
(XEN) Built 1 zonelists
(XEN) Kernel command line: nomca console=tty0 console=ttyS1,115200,8n1 rhgb
root=LABEL=/ ro
(XEN) PID hash table entries: 4096 (order: 12, 131072 bytes)
(XEN) Console: colour VGA+ 80x25
(XEN) Linux version 2.6.16.33-xen (inakoshi@xxxxxxxxxxxxxxxxxxxxxxxxxx) (gcc
version 3.4.6 20060404 (Red Hat 3.4.6-3)) #2 SMP Fri Dec 22 13:57:16 JST 2006
EFI v1.00 by Xen/ia64: SALsystab=0x2178 MPS=0x7ff71000 ACPI 2.0=0x7ff72000
ACPI=0x7ff73000 SMBIOS=0xf0000
Initial ramdisk at: 0xe00000001fab8000 (1330882 bytes)
SAL 0.1: Xen/ia64 Xen/ia64 version 0.0
SAL: AP wakeup using external interrupt vector 0xf3
No logical to physical processor mapping available
ACPI: Local APIC address c0000000fee00000
iosapic_register_platform_irq(): invalid int type 0xff
1 CPUs available, 16 CPUs total
Running on Xen! start_info_pfn=0x145c nr_pages=32768 flags=0x3
SMP: Allowing 16 CPUs, 15 hotplug CPUs
Built 1 zonelists
Kernel command line: nomca console=tty0 console=ttyS1,115200,8n1 rhgb
root=LABEL=/ ro
PID hash table entries: 4096 (order: 12, 131072 bytes)
Console: colour VGA+ 80x25
Dentry cache hash table entries: 131072 (order: 6, 1048576 bytes)
Inode-cache hash table entries: 65536 (order: 5, 524288 bytes)
Software IO TLB enabled:
Aperture: 2 megabytes
Kernel range: 0xe000000001580000 - 0xe000000001780000
Address size: 30 bits
Memory: 480352k/507904k available (10481k code, 26912k reserved, 4360k data,
288k init)
McKinley Errata 9 workaround not needed; disabling it
register RESCHEDULE_VECTOR (RESCHED0) to xen irq (256)
register IPI_VECTOR (IPI0) to xen irq (257)
Percpu irq 238 is unsupported by xen!
register VIRQ_ITC (timer0) to xen irq (258)
Mount-cache hash table entries: 1024
Boot processor id 0x0/0x0
Brought up 1 CPUs
Total of 1 processors activated (2719.74 BogoMIPS).
migration_cost=0
checking if image is initramfs... it is
Freeing initrd memory: 1296kB freed
grant table at e000010000104000
Grant table initialized
NET: Registered protocol family 16
ACPI: bus type pci registered
ACPI: Subsystem revision 20060127
ACPI: Interpreter enabled
ACPI: Using IOSAPIC for interrupt routing
ACPI: PCI Root Bridge [PCI0] (0000:00)
PCI quirk: region 0c00-0c7f claimed by ICH4 ACPI/GPIO/TCO
PCI quirk: region 0500-053f claimed by ICH4 GPIO
PCI: Ignoring BAR0-3 of IDE controller 0000:00:1f.1
ACPI: PCI Root Bridge [PCI1] (0000:02)
ACPI: PCI Root Bridge [PCI3] (0000:09)
ACPI: PCI Root Bridge [PCI4] (0000:0f)
ACPI: Device [CSFF] status [00000008]: functional but not present; setting
present
ACPI: PCI Root Bridge [CSFF] (0000:ff)
xen_mem: Initialising balloon driver.
SCSI subsystem initialized
usbcore: registered new driver usbfs
usbcore: registered new driver hub
perfmon: version 2.0 IRQ 238
perfmon: Montecito PMU detected, 27 PMCs, 35 PMDs, 12 counters (47 bits)
PAL Information Facility v0.5
perfmon: added sampling format default_format
perfmon_default_smpl: default_format v2.0 registered
Installing knfsd (copyright (C) 1996 okir@xxxxxxxxxxxx).
SGI XFS with large block/inode numbers, no debug enabled
Initializing Cryptographic API
io scheduler noop registered
io scheduler anticipatory registered (default)
io scheduler deadline registered
io scheduler cfq registered
pci_hotplug: PCI Hot Plug PCI Core version: 0.5
acpiphp: ACPI Hot Plug PCI Controller Driver version: 0.5
acpiphp: Slot [1] registered
acpiphp: Slot [2] registered
acpiphp: Slot [3] registered
acpiphp: Slot [4] registered
acpiphp: Slot [5] registered
acpiphp: Slot [6] registered
acpiphp: Slot [7] registered
acpiphp: Slot [8] registered
ACPI: Power Button (FF) [PWRF]
EFI Time Services Driver v0.4
Linux agpgart interface v0.101 (c) Dave Jones
[drm] Initialized drm 1.0.1 20051102
serio: i8042 AUX port at 0x60,0x64 irq 36
serio: i8042 KBD port at 0x60,0x64 irq 32
RAMDISK driver initialized: 16 RAM disks of 4096K size 1024 blocksize
loop: loaded (max 8 devices)
HP CISS Driver (v 2.6.10)
Intel(R) PRO/1000 Network Driver - version 6.3.9-k4
Copyright (c) 1999-2005 Intel Corporation.
GSI 18 (level, low) -> CPU 0 (0x0000) vector 48
ACPI: PCI Interrupt 0000:01:00.0[A] -> GSI 18 (level, low) -> IRQ 48
e1000: 0000:01:00.0: e1000_probe: (PCI:33MHz:32-bit) 00:0e:0c:ad:b3:4a
e1000: eth0: e1000_probe: Intel(R) PRO/1000 Network Connection
e100: Intel(R) PRO/100 Network Driver, 3.5.10-k2-NAPI
e100: Copyright(c) 1999-2005 Intel Corporation
tun: Universal TUN/TAP device driver, 1.6
tun: (C) 1999-2004 Max Krasnyansky <maxk@xxxxxxxxxxxx>
arcnet: v3.93 BETA 2000/04/29 - by Avery Pennarun et al.
netconsole: not configured, aborting
Linux video capture interface: v1.00
Xen virtual console successfully installed as ttyS0
Event-channel device installed.
Uniform Multi-Platform E-IDE driver Revision: 7.00alpha2
ide: Assuming 33MHz system bus speed for PIO modes; override with idebus=xx
ICH4: IDE controller at PCI slot 0000:00:1f.1
PCI: Device 0000:00:1f.1 not available because of resource collisions
ACPI: PCI Interrupt 0000:00:1f.1[A]: no GSI
ICH4: BIOS configuration fixed.
ICH4: chipset revision 2
ICH4: not 100% native mode: will probe irqs later
ide0: BM-DMA at 0x1000-0x1007, BIOS settings: hda:DMA, hdb:pio
ide1: BM-DMA at 0x1008-0x100f, BIOS settings: hdc:pio, hdd:pio
<G><2>irq.c:389:d0 Cannot bind IRQ 254 to guest. In use by 'IPI'.
hda: DW-224E-A, ATAPI CD/DVD-ROM drive
ide0 at 0x1f0-0x1f7,0x3f6 on irq 34
hda: ATAPI 24X DVD-ROM CD-R/RW drive, 1658kB Cache, UDMA(33)
Uniform CD-ROM driver Revision: 3.20
ide-floppy driver 0.99.newide
st: Version 20050830, fixed bufsize 32768, s/g segs 256
osst :I: Tape driver with OnStream support version 0.99.3
osst :I: $Id: osst.c,v 1.73 2005/01/01 21:13:34 wriede Exp $
Fusion MPT base driver 3.03.07
Copyright (c) 1999-2005 LSI Logic Corporation
Fusion MPT SPI Host driver 3.03.07
GSI 28 (level, low) -> CPU 0 (0x0000) vector 49
ACPI: PCI Interrupt 0000:06:02.0[A] -> GSI 28 (level, low) -> IRQ 49
mptbase: Initiating ioc0 bringup
ioc0: 53C1030: Capabilities={Initiator}
scsi0 : ioc0: LSI53C1030, FwRev=01030a00h, Ports=1, MaxQ=255, IRQ=49
Vendor: FUJITSU Model: MAW3147NC Rev: 5203
Type: Direct-Access ANSI SCSI revision: 03
SCSI device sda: 286749488 512-byte hdwr sectors (146816 MB)
sda: Write Protect is off
SCSI device sda: drive cache: write through
SCSI device sda: 286749488 512-byte hdwr sectors (146816 MB)
sda: Write Protect is off
SCSI device sda: drive cache: write through
sda: sda1 sda2 sda3
sd 0:0:0:0: Attached scsi disk sda
sd 0:0:0:0: Attached scsi generic sg0 type 0
Vendor: FUJITSU Model: MAW3147NC Rev: 5203
Type: Direct-Access ANSI SCSI revision: 03
SCSI device sdb: 286749488 512-byte hdwr sectors (146816 MB)
sdb: Write Protect is off
SCSI device sdb: drive cache: write through
SCSI device sdb: 286749488 512-byte hdwr sectors (146816 MB)
sdb: Write Protect is off
SCSI device sdb: drive cache: write through
sdb: sdb1 sdb2 sdb3 sdb4 sdb5 sdb6 sdb7 sdb8 sdb9
sd 0:0:1:0: Attached scsi disk sdb
sd 0:0:1:0: Attached scsi generic sg1 type 0
Vendor: FUJITSU Model: MAP3184NC Rev: 3001
Type: Direct-Access ANSI SCSI revision: 03
SCSI device sdc: 35694904 512-byte hdwr sectors (18276 MB)
sdc: Write Protect is off
SCSI device sdc: drive cache: write through
SCSI device sdc: 35694904 512-byte hdwr sectors (18276 MB)
sdc: Write Protect is off
SCSI device sdc: drive cache: write through
sdc: sdc1 sdc2 sdc3
sd 0:0:2:0: Attached scsi disk sdc
sd 0:0:2:0: Attached scsi generic sg2 type 0
Vendor: ESG-SHV Model: SCA HSBP M17 Rev: 1.15
Type: Processor ANSI SCSI revision: 02
0:0:6:0: Attached scsi generic sg3 type 3
GSI 29 (level, low) -> CPU 0 (0x0000) vector 50
ACPI: PCI Interrupt 0000:06:02.1[B] -> GSI 29 (level, low) -> IRQ 50
mptbase: Initiating ioc1 bringup
ioc1: 53C1030: Capabilities={Initiator}
scsi1 : ioc1: LSI53C1030, FwRev=01030a00h, Ports=1, MaxQ=255, IRQ=50
Fusion MPT SAS Host driver 3.03.07
usbmon: debugfs is not available
GSI 23 (level, low) -> CPU 0 (0x0000) vector 51
ACPI: PCI Interrupt 0000:00:1d.7[D] -> GSI 23 (level, low) -> IRQ 51
ehci_hcd 0000:00:1d.7: EHCI Host Controller
ehci_hcd 0000:00:1d.7: debug port 1
PCI: slot 0000:00:1d.7 has incorrect PCI cache line size of 0 bytes, correcting
to 128
ehci_hcd 0000:00:1d.7: new USB bus registered, assigned bus number 1
ehci_hcd 0000:00:1d.7: irq 51, io mem 0xf9ff0000
ehci_hcd 0000:00:1d.7: USB 2.0 started, EHCI 1.00, driver 10 Dec 2004
usb usb1: configuration #1 chosen from 1 choice
hub 1-0:1.0: USB hub found
hub 1-0:1.0: 4 ports detected
USB Universal Host Controller Interface driver v2.3
GSI 16 (level, low) -> CPU 0 (0x0000) vector 52
ACPI: PCI Interrupt 0000:00:1d.0[A] -> GSI 16 (level, low) -> IRQ 52
uhci_hcd 0000:00:1d.0: UHCI Host Controller
uhci_hcd 0000:00:1d.0: new USB bus registered, assigned bus number 2
uhci_hcd 0000:00:1d.0: irq 52, io base 0x00004cc0
usb usb2: configuration #1 chosen from 1 choice
hub 2-0:1.0: USB hub found
hub 2-0:1.0: 2 ports detected
GSI 19 (level, low) -> CPU 0 (0x0000) vector 53
ACPI: PCI Interrupt 0000:00:1d.1[B] -> GSI 19 (level, low) -> IRQ 53
uhci_hcd 0000:00:1d.1: UHCI Host Controller
uhci_hcd 0000:00:1d.1: new USB bus registered, assigned bus number 3
uhci_hcd 0000:00:1d.1: irq 53, io base 0x00004ce0
usb usb3: configuration #1 chosen from 1 choice
hub 3-0:1.0: USB hub found
hub 3-0:1.0: 2 ports detected
Initializing USB Mass Storage driver...
usb 3-2: new low speed USB device using uhci_hcd and address 2
usb 3-2: configuration #1 chosen from 1 choice
usbcore: registered new driver usb-storage
USB Mass Storage support registered.
usbcore: registered new driver hiddev
input: Composite USB PS2 Converter USB to PS2 Adaptor v1.12 as
/class/input/input0
input: USB HID v1.10 Keyboard [Composite USB PS2 Converter USB to PS2 Adaptor
v1.12] on usb-0000:00:1d.1-2
input: Composite USB PS2 Converter USB to PS2 Adaptor v1.12 as
/class/input/input1
input: USB HID v1.10 Mouse [Composite USB PS2 Converter USB to PS2 Adaptor
v1.12] on usb-0000:00:1d.1-2
usbcore: registered new driver usbhid
drivers/usb/input/hid-core.c: v2.6:USB HID core driver
mice: PS/2 mouse device common for all mice
i2c /dev entries driver
device-mapper: 4.5.0-ioctl (2005-10-04) initialised: dm-devel@xxxxxxxxxx
EFI Variables Facility v0.08 2004-May-17
Advanced Linux Sound Architecture Driver Version 1.0.11rc2 (Wed Jan 04 08:57:20
2006 UTC).
atkbd.c: keyboard reset failed on isa0060/serio1
atkbd.c: keyboard reset failed on isa0060/serio0
no UART detected at 0x1
specify port
snd_mpu401: probe of snd_mpu401.0 failed with error -22
ALSA device list:
#0: Dummy 1
#1: Virtual MIDI Card 1
NET: Registered protocol family 2
IP route cache hash table entries: 8192 (order: 2, 65536 bytes)
TCP established hash table entries: 32768 (order: 5, 524288 bytes)
TCP bind hash table entries: 32768 (order: 5, 524288 bytes)
TCP: Hash tables configured (established 32768 bind 32768)
TCP reno registered
TCP bic registered
NET: Registered protocol family 1
NET: Registered protocol family 17
Bridge firewalling registered
xen privcmd uses pseudo physical addr range [0x200000000, 0x3ffff000000]
(4186096MB)
Xen p2m: assign p2m table of [0x0000000000000000, 0x0000000020000000)
Xen p2m: to [0x0000000200000000, 0x0000000203ffc000) (65536 KBytes)
Freeing unused kernel memory: 288kB freed
Red Hat nash version 4.2.1.8 starting
Mounted /proc filesystem
Mounting sysfs
Creating /dev
Starting udev
Creating root device
Mounting root filesystem
kjournald starting. Commit interval 5 seconds
EXT3-fs: mounted filesystem with ordered data mode.
Switching to new root
(XEN) ia64_fault, vector=0x18, ifa=0xf00000007fb00000, iip=0xa000000000010640,
ipsr=0x0000001008220018, isr=0x0000028000000030
(XEN) General Exception: IA-64 Reserved Register/Field fault (data access).
(XEN) d 0xf000000007c80080 domid 0
(XEN) vcpu 0xf000000007c58000 vcpu 0
(XEN)
(XEN) CPU 0
(XEN) psr : 0000001008220018 ifs : 8000000000000000 ip : [<a000000000010640>]
(XEN) ip is at ???
(XEN) unat: 0000000000000000 pfs : c000000000000008 rsc : 000000000000000f
(XEN) rnat: 0000000000000000 bsps: 60000fff7fffc0b8 pr : 0000000000001201
(XEN) ldrs: 0000000000a00000 ccv : 0000000000000000 fpsr: 0009804c8a70033f
(XEN) csd : 0000000000000000 ssd : 0000000000000000
(XEN) b0 : 20000000000b16f0 b6 : 2000000000245d00 b7 : a000000000010660
(XEN) f6 : 000000000000000000000 f7 : 000000000000000000000
(XEN) f8 : 000000000000000000000 f9 : 000000000000000000000
(XEN) f10 : 000000000000000000000 f11 : 000000000000000000000
(XEN) r1 : 20000000002c8238 r2 : 0000000000000000 r3 : e00000001fa0fef8
(XEN) r8 : 0000000000000000 r9 : 200000000009c000 r10 : 0000000000000000
(XEN) r11 : c000000000000590 r12 : 60000fffffc1ade0 r13 : 2000000000334b40
(XEN) r14 : a000000000010660 r15 : 0000000000000419 r16 : 0000000000000000
(XEN) r17 : 0000000000000000 r18 : 0000000000000000 r19 : 0000000000000000
(XEN) r20 : 0009804c8a70033f r21 : 20000000000b16f0 r22 : 0000000000000000
(XEN) r23 : 60000fff7fffc0b8 r24 : 0000000000000000 r25 : fffffffffff04898
(XEN) r26 : c000000000000008 r27 : 000000000000000f r28 : a000000000010640
(XEN) r29 : 0000161308126010 r30 : 0000000000000008 r31 : 0000000000001241
(XEN)
(XEN) Call Trace:
(XEN) [<f0000000040b01a0>] show_stack+0x80/0xa0
(XEN) sp=f000000007c5fc30 bsp=f000000007c59278
(XEN) [<f000000004078630>] ia64_fault+0x120/0x670
(XEN) sp=f000000007c5fe00 bsp=f000000007c59240
(XEN) [<f0000000040a9460>] ia64_leave_kernel+0x0/0x310
(XEN) sp=f000000007c5fe00 bsp=f000000007c59240
(XEN)
(XEN) ****************************************
(XEN) Panic on CPU 0:
(XEN) Fault in Xen.
(XEN) ****************************************
(XEN)
(XEN) Reboot in five seconds...
diff -r 80c5b5914b79 linux-2.6-xen-sparse/arch/ia64/xen/hypercall.S
--- a/linux-2.6-xen-sparse/arch/ia64/xen/hypercall.S Wed Dec 20 14:55:02
2006 -0700
+++ b/linux-2.6-xen-sparse/arch/ia64/xen/hypercall.S Fri Dec 22 14:23:55
2006 +0900
@@ -8,27 +8,6 @@
#include <asm/processor.h>
#include <asm/asmmacro.h>
-/* To clear vpsr.ic, vpsr.i needs to be cleared first */
-#define XEN_CLEAR_PSR_IC \
- mov r14=1; \
- movl r15=XSI_PSR_I_ADDR; \
- movl r2=XSI_PSR_IC; \
- ;; \
- ld8 r15=[r15]; \
- ld4 r3=[r2]; \
- ;; \
- ld1 r16=[r15]; \
- ;; \
- st1 [r15]=r14; \
- st4 [r2]=r0; \
- ;;
-
-/* First restore vpsr.ic, and then vpsr.i */
-#define XEN_RESTORE_PSR_IC \
- st4 [r2]=r3; \
- st1 [r15]=r16; \
- ;;
-
GLOBAL_ENTRY(xen_get_ivr)
movl r8=running_on_xen;;
ld4 r8=[r8];;
@@ -36,12 +15,8 @@ GLOBAL_ENTRY(xen_get_ivr)
(p7) mov r8=cr.ivr;;
(p7) br.ret.sptk.many rp
;;
- XEN_CLEAR_PSR_IC
- ;;
XEN_HYPER_GET_IVR
;;
- XEN_RESTORE_PSR_IC
- ;;
br.ret.sptk.many rp
;;
END(xen_get_ivr)
@@ -53,12 +28,8 @@ GLOBAL_ENTRY(xen_get_tpr)
(p7) mov r8=cr.tpr;;
(p7) br.ret.sptk.many rp
;;
- XEN_CLEAR_PSR_IC
- ;;
XEN_HYPER_GET_TPR
;;
- XEN_RESTORE_PSR_IC
- ;;
br.ret.sptk.many rp
;;
END(xen_get_tpr)
@@ -72,12 +43,8 @@ GLOBAL_ENTRY(xen_set_tpr)
;;
mov r8=r32
;;
- XEN_CLEAR_PSR_IC
- ;;
XEN_HYPER_SET_TPR
;;
- XEN_RESTORE_PSR_IC
- ;;
br.ret.sptk.many rp
;;
END(xen_set_tpr)
@@ -91,12 +58,8 @@ GLOBAL_ENTRY(xen_eoi)
;;
mov r8=r32
;;
- XEN_CLEAR_PSR_IC
- ;;
XEN_HYPER_EOI
;;
- XEN_RESTORE_PSR_IC
- ;;
br.ret.sptk.many rp
;;
END(xen_eoi)
@@ -110,12 +73,8 @@ GLOBAL_ENTRY(xen_thash)
;;
mov r8=r32
;;
- XEN_CLEAR_PSR_IC
- ;;
XEN_HYPER_THASH
;;
- XEN_RESTORE_PSR_IC
- ;;
br.ret.sptk.many rp
;;
END(xen_thash)
@@ -129,12 +88,8 @@ GLOBAL_ENTRY(xen_set_itm)
;;
mov r8=r32
;;
- XEN_CLEAR_PSR_IC
- ;;
XEN_HYPER_SET_ITM
;;
- XEN_RESTORE_PSR_IC
- ;;
br.ret.sptk.many rp
;;
END(xen_set_itm)
@@ -149,12 +104,8 @@ GLOBAL_ENTRY(xen_ptcga)
mov r8=r32
mov r9=r33
;;
- XEN_CLEAR_PSR_IC
- ;;
XEN_HYPER_PTC_GA
;;
- XEN_RESTORE_PSR_IC
- ;;
br.ret.sptk.many rp
;;
END(xen_ptcga)
@@ -168,12 +119,8 @@ GLOBAL_ENTRY(xen_get_rr)
;;
mov r8=r32
;;
- XEN_CLEAR_PSR_IC
- ;;
XEN_HYPER_GET_RR
;;
- XEN_RESTORE_PSR_IC
- ;;
br.ret.sptk.many rp
;;
END(xen_get_rr)
@@ -188,11 +135,7 @@ GLOBAL_ENTRY(xen_set_rr)
mov r8=r32
mov r9=r33
;;
- XEN_CLEAR_PSR_IC
- ;;
XEN_HYPER_SET_RR
- ;;
- XEN_RESTORE_PSR_IC
;;
br.ret.sptk.many rp
;;
@@ -240,12 +183,8 @@ 1: mov r8=r32
1: mov r8=r32
mov r9=r33
;;
- XEN_CLEAR_PSR_IC
- ;;
XEN_HYPER_SET_KR
;;
- XEN_RESTORE_PSR_IC
- ;;
br.ret.sptk.many rp
END(xen_set_kr)
@@ -258,12 +197,8 @@ GLOBAL_ENTRY(xen_fc)
;;
mov r8=r32
;;
- XEN_CLEAR_PSR_IC
- ;;
XEN_HYPER_FC
;;
- XEN_RESTORE_PSR_IC
- ;;
br.ret.sptk.many rp
END(xen_fc)
@@ -276,12 +211,8 @@ GLOBAL_ENTRY(xen_get_cpuid)
;;
mov r8=r32
;;
- XEN_CLEAR_PSR_IC
- ;;
XEN_HYPER_GET_CPUID
;;
- XEN_RESTORE_PSR_IC
- ;;
br.ret.sptk.many rp
END(xen_get_cpuid)
@@ -294,11 +225,7 @@ GLOBAL_ENTRY(xen_get_pmd)
;;
mov r8=r32
;;
- XEN_CLEAR_PSR_IC
- ;;
XEN_HYPER_GET_PMD
- ;;
- XEN_RESTORE_PSR_IC
;;
br.ret.sptk.many rp
END(xen_get_pmd)
@@ -313,11 +240,7 @@ GLOBAL_ENTRY(xen_get_eflag)
;;
mov r8=r32
;;
- XEN_CLEAR_PSR_IC
- ;;
XEN_HYPER_GET_EFLAG
- ;;
- XEN_RESTORE_PSR_IC
;;
br.ret.sptk.many rp
END(xen_get_eflag)
@@ -332,11 +255,7 @@ GLOBAL_ENTRY(xen_set_eflag)
;;
mov r8=r32
;;
- XEN_CLEAR_PSR_IC
- ;;
XEN_HYPER_SET_EFLAG
- ;;
- XEN_RESTORE_PSR_IC
;;
br.ret.sptk.many rp
END(xen_set_eflag)
@@ -377,7 +296,7 @@ GLOBAL_ENTRY(xen_get_psr)
;;
END(xen_get_psr)
- // see xen_ssm_i() in privop.h
+ // see xen_ssm_i() in privop.h
// r22 = &vcpu->vcpu_info->evtchn_upcall_mask
// r23 = &vpsr.ic
// r24 = &vcpu->vcpu_info->evtchn_upcall_pending
@@ -395,7 +314,6 @@ END(xen_get_psr)
(p14) cmp.ne.unc p11,p0=r0,r25; \
;; \
(p11) st1 [r22]=r20; \
-(p11) st4 [r23]=r0; \
(p11) XEN_HYPER_SSM_I;
GLOBAL_ENTRY(xen_ssm_i_0)
diff -r 80c5b5914b79 linux-2.6-xen-sparse/arch/ia64/xen/xenentry.S
--- a/linux-2.6-xen-sparse/arch/ia64/xen/xenentry.S Wed Dec 20 14:55:02
2006 -0700
+++ b/linux-2.6-xen-sparse/arch/ia64/xen/xenentry.S Fri Dec 22 13:34:26
2006 +0900
@@ -59,12 +59,6 @@ GLOBAL_ENTRY(ia64_switch_to)
shr.u r26=r20,IA64_GRANULE_SHIFT
cmp.eq p7,p6=r25,in0
;;
-#ifdef CONFIG_XEN
- movl r8=XSI_PSR_IC
- ;;
- st4 [r8]=r0 // force psr.ic off for hyperprivop(s)
- ;;
-#endif
/*
* If we've already mapped this task's page, we can skip doing it again.
*/
@@ -72,19 +66,13 @@ GLOBAL_ENTRY(ia64_switch_to)
(p6) br.cond.dpnt .map
;;
.done:
-#ifdef CONFIG_XEN
- // psr.ic already off
+ ld8 sp=[r21] // load kernel stack pointer of new task
+#ifdef CONFIG_XEN
// update "current" application register
mov r8=IA64_KR_CURRENT
mov r9=in0;;
XEN_HYPER_SET_KR
- ld8 sp=[r21] // load kernel stack pointer of new task
- movl r27=XSI_PSR_IC
- mov r8=1
- ;;
- st4 [r27]=r8 // psr.ic back on
-#else
- ld8 sp=[r21] // load kernel stack pointer of new task
+#else
mov IA64_KR(CURRENT)=in0 // update "current" application register
#endif
mov r8=r13 // return pointer to previously running
task
@@ -99,7 +87,10 @@ GLOBAL_ENTRY(ia64_switch_to)
.map:
#ifdef CONFIG_XEN
- // psr.ic already off
+ movl r25=XSI_PSR_IC //clear psr.ic
+ ;;
+ st4 [r25]=r0
+ ;;
#else
rsm psr.ic // interrupts (psr.i) are already
disabled here
#endif
@@ -132,7 +123,13 @@ GLOBAL_ENTRY(ia64_switch_to)
#endif
;;
itr.d dtr[r25]=r23 // wire in new mapping...
-#ifndef CONFIG_XEN
+#ifdef CONFIG_XEN
+ mov r9=1
+ movl r8=XSI_PSR_IC
+ ;;
+ st4 [r8]=r9
+ ;;
+#else
ssm psr.ic // reenable the psr.ic bit
;;
srlz.d
diff -r 80c5b5914b79 linux-2.6-xen-sparse/arch/ia64/xen/xenivt.S
--- a/linux-2.6-xen-sparse/arch/ia64/xen/xenivt.S Wed Dec 20 14:55:02
2006 -0700
+++ b/linux-2.6-xen-sparse/arch/ia64/xen/xenivt.S Fri Dec 22 13:34:26
2006 +0900
@@ -709,11 +709,23 @@ ENTRY(page_fault)
;;
#endif
#ifdef CONFIG_XEN
- br.cond.sptk.many xen_page_fault
- ;;
-done_xen_page_fault:
-#endif
+
+#define MASK_TO_PEND_OFS (-1)
+
+(p15) movl r14=XSI_PSR_I_ADDR
+ ;;
+(p15) ld8 r14=[r14]
+ ;;
+(p15) st1 [r14]=r0,MASK_TO_PEND_OFS // if (p15) vpsr.i = 1
+ ;; // if (p15) (vcpu->vcpu_info->evtchn_upcall_mask)=0
+(p15) ld1 r14=[r14] // if
(vcpu->vcpu_info->evtchn_upcall_pending)
+ ;;
+(p15) cmp.ne p15,p0=r14,r0
+ ;;
+(p15) XEN_HYPER_SSM_I
+#else
(p15) ssm psr.i // restore psr.i
+#endif
movl r14=ia64_leave_kernel
;;
SAVE_REST
@@ -729,25 +741,6 @@ ENTRY(dkey_miss)
ENTRY(dkey_miss)
DBG_FAULT(7)
FAULT(7)
-#ifdef CONFIG_XEN
- // Leaving this code inline above results in an IVT section overflow
- // There is no particular reason for this code to be here...
-xen_page_fault:
-(p15) movl r3=XSI_PSR_I_ADDR
- ;;
-(p15) ld8 r3=[r3]
- ;;
-(p15) st1 [r3]=r0,-1 // if (p15) vpsr.i = 1
- mov r14=r0
- ;;
-(p15) ld1 r14=[r3] // if (pending_events)
- adds r3=8,r2 // re-set up second base pointer
- ;;
-(p15) cmp.ne p15,p0=r14,r0
- ;;
- br.cond.sptk.many done_xen_page_fault
- ;;
-#endif
END(dkey_miss)
.org ia64_ivt+0x2000
@@ -1170,14 +1163,13 @@ 1:
#ifdef CONFIG_XEN
(p15) ld8 r16=[r16] // vpsr.i
;;
-(p15) st1 [r16]=r0,-1 // if (p15) vpsr.i = 1
- mov r2=r0
- ;;
-(p15) ld1 r2=[r16] // if (pending_events)
- ;;
- cmp.ne p6,p0=r2,r0
- ;;
-(p6) ssm psr.i // do a real ssm psr.i
+(p15) st1 [r16]=r0,MASK_TO_PEND_OFS // if (p15) vpsr.i = 1
+ ;; // if (p15) (vcpu->vcpu_info->evtchn_upcall_mask)=0
+(p15) ld1 r2=[r16] // if
(vcpu->vcpu_info->evtchn_upcall_pending)
+ ;;
+(p15) cmp.ne.unc p6,p0=r2,r0
+ ;;
+(p6) XEN_HYPER_SSM_I // do a real ssm psr.i
#else
(p15) ssm psr.i // M2 restore psr.i
#endif
diff -r 80c5b5914b79 linux-2.6-xen-sparse/arch/ia64/xen/xenpal.S
--- a/linux-2.6-xen-sparse/arch/ia64/xen/xenpal.S Wed Dec 20 14:55:02
2006 -0700
+++ b/linux-2.6-xen-sparse/arch/ia64/xen/xenpal.S Fri Dec 22 13:34:26
2006 +0900
@@ -41,16 +41,16 @@ 1: {
#ifdef CONFIG_XEN
// this is low priority for paravirtualization, but is called
// from the idle loop so confuses privop counting
- movl r31=XSI_PSR_IC
+ movl r31=XSI_PSR_I_ADDR
;;
-(p6) st4 [r31]=r0
+ ld8 r31=[r31]
+ mov r22=1
;;
-(p7) adds r31=XSI_PSR_I_ADDR_OFS-XSI_PSR_IC_OFS,r31
-(p7) mov r22=1
+ st1 [r31]=r22
+ ;;
+(p6) movl r31=XSI_PSR_IC
;;
-(p7) ld8 r31=[r31]
- ;;
-(p7) st1 [r31]=r22
+(p6) st4.rel [r31]=r0
;;
mov r31 = in3
mov b7 = loc2
diff -r 80c5b5914b79 linux-2.6-xen-sparse/include/asm-ia64/xen/privop.h
--- a/linux-2.6-xen-sparse/include/asm-ia64/xen/privop.h Wed Dec 20
14:55:02 2006 -0700
+++ b/linux-2.6-xen-sparse/include/asm-ia64/xen/privop.h Fri Dec 22
13:34:26 2006 +0900
@@ -123,8 +123,6 @@ extern void xen_set_eflag(unsigned long)
* that we inline it */
#define xen_hyper_ssm_i() \
({ \
- xen_set_virtual_psr_i(0); \
- xen_set_virtual_psr_ic(0); \
XEN_HYPER_SSM_I; \
})
@@ -139,8 +137,10 @@ extern void xen_set_eflag(unsigned long)
#define xen_ssm_i() \
({ \
int old = xen_get_virtual_psr_i(); \
- xen_set_virtual_psr_i(1); \
- if (!old && xen_get_virtual_pend()) xen_hyper_ssm_i(); \
+ if (!old ){; \
+ if(xen_get_virtual_pend()) xen_hyper_ssm_i(); \
+ else xen_set_virtual_psr_i(1);
\
+ }; \
})
#define xen_ia64_intrin_local_irq_restore(x) \
diff -r 80c5b5914b79 xen/arch/ia64/xen/faults.c
--- a/xen/arch/ia64/xen/faults.c Wed Dec 20 14:55:02 2006 -0700
+++ b/xen/arch/ia64/xen/faults.c Fri Dec 22 13:34:26 2006 +0900
@@ -545,7 +545,8 @@ ia64_handle_break(unsigned long ifa, str
vcpu_increment_iip(current);
} else
reflect_interruption(isr, regs, vector);
- } else if (!PSCB(v, interrupt_collection_enabled)) {
+ } else if ((iim - HYPERPRIVOP_START) < HYPERPRIVOP_MAX
+ && ia64_get_cpl(regs->cr_ipsr) == 2) {
if (ia64_hyperprivop(iim, regs))
vcpu_increment_iip(current);
} else {
diff -r 80c5b5914b79 xen/arch/ia64/xen/ivt.S
--- a/xen/arch/ia64/xen/ivt.S Wed Dec 20 14:55:02 2006 -0700
+++ b/xen/arch/ia64/xen/ivt.S Fri Dec 22 13:34:27 2006 +0900
@@ -1,6 +1,7 @@
#ifdef XEN
#include <asm/debugger.h>
#include <asm/vhpt.h>
+#include <public/arch-ia64.h>
#endif
/*
* arch/ia64/kernel/ivt.S
@@ -1074,18 +1075,26 @@ ENTRY(break_fault)
#endif
movl r18=THIS_CPU(current_psr_ic_addr)
;;
- ld8 r18=[r18]
- ;;
- ld4 r19=[r18]
+ ld8 r18=[r18]
;;
cmp.eq p7,p0=r0,r17 // is this a psuedo-cover?
(p7) br.spnt.many dispatch_privop_fault
;;
- // If vpsr.ic is off, we have a hyperprivop. A hyperprivop is
+ // if(ipsr.cpl==2&&iim>HYPERPRIVOP_START&&iim<HYPERPRIVOP_MAX, this is
+ // hyperprivop. A hyperprivop is
// hand-coded assembly with psr.ic off which means it can make
// no calls, cannot use r1-r15, and it can have no memory accesses
// unless they are to pinned addresses!
- cmp4.eq p7,p0=r0,r19
+ mov r19= cr.ipsr
+ movl r20=HYPERPRIVOP_START
+ mov r21=HYPERPRIVOP_MAX
+ ;;
+ sub r20=r17,r20
+ extr.u r19=r19,IA64_PSR_CPL0_BIT,2 // extract cpl field
from cr.ipsr
+ ;;
+ cmp.gtu p7,p0=r21,r20
+ ;;
+ cmp.eq.and p7,p0=2,r19 //ipsr.cpl==2
(p7) br.sptk.many fast_hyperprivop
;;
movl r22=THIS_CPU(cpu_kr)+IA64_KR_CURRENT_OFFSET
diff -r 80c5b5914b79 xen/include/public/arch-ia64.h
--- a/xen/include/public/arch-ia64.h Wed Dec 20 14:55:02 2006 -0700
+++ b/xen/include/public/arch-ia64.h Fri Dec 22 13:34:27 2006 +0900
@@ -434,32 +434,33 @@ struct xen_ia64_boot_param {
#define XMAPPEDREGS_OFS XSI_SIZE
/* Hyperprivops. */
-#define HYPERPRIVOP_RFI 0x1
-#define HYPERPRIVOP_RSM_DT 0x2
-#define HYPERPRIVOP_SSM_DT 0x3
-#define HYPERPRIVOP_COVER 0x4
-#define HYPERPRIVOP_ITC_D 0x5
-#define HYPERPRIVOP_ITC_I 0x6
-#define HYPERPRIVOP_SSM_I 0x7
-#define HYPERPRIVOP_GET_IVR 0x8
-#define HYPERPRIVOP_GET_TPR 0x9
-#define HYPERPRIVOP_SET_TPR 0xa
-#define HYPERPRIVOP_EOI 0xb
-#define HYPERPRIVOP_SET_ITM 0xc
-#define HYPERPRIVOP_THASH 0xd
-#define HYPERPRIVOP_PTC_GA 0xe
-#define HYPERPRIVOP_ITR_D 0xf
-#define HYPERPRIVOP_GET_RR 0x10
-#define HYPERPRIVOP_SET_RR 0x11
-#define HYPERPRIVOP_SET_KR 0x12
-#define HYPERPRIVOP_FC 0x13
-#define HYPERPRIVOP_GET_CPUID 0x14
-#define HYPERPRIVOP_GET_PMD 0x15
-#define HYPERPRIVOP_GET_EFLAG 0x16
-#define HYPERPRIVOP_SET_EFLAG 0x17
-#define HYPERPRIVOP_RSM_BE 0x18
-#define HYPERPRIVOP_GET_PSR 0x19
-#define HYPERPRIVOP_MAX 0x19
+#define HYPERPRIVOP_START 0x1
+#define HYPERPRIVOP_RFI (HYPERPRIVOP_START+0x0)
+#define HYPERPRIVOP_RSM_DT (HYPERPRIVOP_START+0x1)
+#define HYPERPRIVOP_SSM_DT (HYPERPRIVOP_START+0x2)
+#define HYPERPRIVOP_COVER (HYPERPRIVOP_START+0x3)
+#define HYPERPRIVOP_ITC_D (HYPERPRIVOP_START+0x4)
+#define HYPERPRIVOP_ITC_I (HYPERPRIVOP_START+0x5)
+#define HYPERPRIVOP_SSM_I (HYPERPRIVOP_START+0x6)
+#define HYPERPRIVOP_GET_IVR (HYPERPRIVOP_START+0x7)
+#define HYPERPRIVOP_GET_TPR (HYPERPRIVOP_START+0x8)
+#define HYPERPRIVOP_SET_TPR (HYPERPRIVOP_START+0x9)
+#define HYPERPRIVOP_EOI (HYPERPRIVOP_START+0xa)
+#define HYPERPRIVOP_SET_ITM (HYPERPRIVOP_START+0xb)
+#define HYPERPRIVOP_THASH (HYPERPRIVOP_START+0xc)
+#define HYPERPRIVOP_PTC_GA (HYPERPRIVOP_START+0xd)
+#define HYPERPRIVOP_ITR_D (HYPERPRIVOP_START+0xe)
+#define HYPERPRIVOP_GET_RR (HYPERPRIVOP_START+0xf)
+#define HYPERPRIVOP_SET_RR (HYPERPRIVOP_START+0x10)
+#define HYPERPRIVOP_SET_KR (HYPERPRIVOP_START+0x11)
+#define HYPERPRIVOP_FC (HYPERPRIVOP_START+0x12)
+#define HYPERPRIVOP_GET_CPUID (HYPERPRIVOP_START+0x13)
+#define HYPERPRIVOP_GET_PMD (HYPERPRIVOP_START+0x14)
+#define HYPERPRIVOP_GET_EFLAG (HYPERPRIVOP_START+0x15)
+#define HYPERPRIVOP_SET_EFLAG (HYPERPRIVOP_START+0x16)
+#define HYPERPRIVOP_RSM_BE (HYPERPRIVOP_START+0x17)
+#define HYPERPRIVOP_GET_PSR (HYPERPRIVOP_START+0x18)
+#define HYPERPRIVOP_MAX (0x19)
/* Fast and light hypercalls. */
#define __HYPERVISOR_ia64_fast_eoi 0x0200
_______________________________________________
Xen-ia64-devel mailing list
Xen-ia64-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-ia64-devel
|