I started with Chris Wright's patch and "backported" it to
xen-ia64-unstable, from 2.6.18 base to 2.6.16, which means simply that
ioremap.c isn't available so the code needs another home.
hypervisor.c seems like the right place.
The patch at the bottom of this mail allows blktap to build. The
kernel boots and other backend methods continue to work (tested
booting domu). blktap method starts to boot but hits a problem.
/etc/xen/domu-g2-blktap contains:
kernel = "/boot/vmlinux-xen.gz"
memory = 512
name = "domu-g2"
vif = [ '' ]
disk = [ 'tap:aio:/var/lib/xen/domu-g2.img,hda1,w' ]
root = "/dev/hda1 ro"
domu messages:
...
netfront: device eth0 has flipping receive path.
IP route cache hash table entries: 4096 (order: 1, 32768 bytes)
TCP established hash table entries: 16384 (order: 4, 262144 bytes)
TCP bind hash table entries: 16384 (order: 4, 262144 bytes)
TCP: Hash tables configured (established 16384 bind 16384)
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 [0x20000000, 0x3ffff000000]
(4193776MB)
Xen p2m: assign p2m table of [0x0000000000000000, 0x0000000020000000)
Xen p2m: to [0x0000000020000000, 0x0000000023ffc000) (65536 KBytes)
[stops here]
dom0 messages:
...
(XEN) tlb_track_allocate_entries:68 allocated 256 num_entries 256 num_free 256
(XEN) tlb_track_create:114 hash 0xf0000040e5858000 hash_size 512
(XEN) ### domain f000000007b74080: rid=80000-c0000 mp_rid=2000
(XEN) arch_domain_create: domain=f000000007b74080
(XEN) DomainU EFI build up: ACPI 2.0=0x1000
(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=0x0000000000000008,
range=[0x0000000000003000-0x000000001fff4000) (511MB)
(XEN) dom mem: type=12, attr=0x0000000000000001,
range=[0x00000ffffc000000-0x0000100000000000) (64MB)
(XEN) vcpu_get_lrr0: Unmasked interrupts unsupported
(XEN) vcpu_get_lrr1: Unmasked interrupts unsupported
(XEN) Domain set shared_info_va to 0xfffffffffff00000
(XEN) Linux version 2.6.16.29-xen (agriffis@xxxxxxxxxxxxxxx) (gcc version 4.1.1
(Gentoo 4.1.1-r1)) #1 SMP Tue Oct 17 13:52:41 EDT 2006
EFI v1.00 by Xen/ia64: SALsystab=0x2178 ACPI 2.0=0x1000
SAL 0.1: Xen/ia64 Xen/ia64 version 0.0
SAL: AP wakeup using external interrupt vector 0xf3
xen_pal_emulator: UNIMPLEMENTED PAL CALL 42!!!!
(XEN) No logical to physical processor mapping available
ACPI: Local APIC address c0000000fee00000
ACPI: Error parsing MADT - no IOSAPIC entries
1 CPUs available, 1 CPUs total
Running on Xen! start_info_pfn=0x7ffd nr_pages=32768 flags=0x0
*** CALLED SAL_MC_SET_PARAMS. IGNORED...
(XEN) *** CALLED SAL_MC_SET_PARAMS. IGNORED...
(XEN) *** CALLED SAL_SET_VECTORS 0. IGNORED...
(XEN) *** CALLED SAL_SET_VECTORS 1. IGNORED...
(XEN) MCA related initialization done
SMP: Allowing 1 CPUs, 0 hotplug CPUs
Built 1 zonelists
Kernel command line: root=/dev/hda1 ro
PID hash table entries: 2048 (order: 11, 65536 bytes)
lookup_domain_mpa: d 0xf000000007b74080 id 2 current 0xf000000007b58000 id 0
(XEN) lookup_domain_mpa: bad mpa 0xffffc019064 (=> 0x20000000)
(XEN) Warning: UC to WB for mpaddr=ffffc019064
gnttab_map_grant_ref_pre:308 GNTMAP_application_map is not supported yet: flags
0x1a
xvd 2[7209]: bugcheck! 0 [1]
Modules linked in:
Pid: 7209, CPU 0, comm: xvd 2
psr : 0000001008026010 ifs : 800000000000038b ip : [<a00000010006a170>] Not
tainted
ip is at HYPERVISOR_grant_table_op+0x170/0x280
unat: 0000000000000000 pfs : 800000000000038b rsc : 000000000000000b
rnat: 40000000001475d0 bsps: 400000000012b9c0 pr : 0000000000006681
ldrs: 0000000000000000 ccv : 0000000000000000 fpsr: 0009804c8a70433f
csd : 0000000000000000 ssd : 0000000000000000
b0 : a00000010006a170 b6 : a000000100072e20 b7 : a0000001000681b0
f6 : 1003e0000000000000028 f7 : 1003e28f5c28f5c28f5c3
f8 : 1003e00000000000000fa f9 : 1003e0000000032000000
f10 : 1003e000000003b9aca00 f11 : 1003ed6bf94d5e57a42bd
r1 : a00000010102d710 r2 : a000000100e52738 r3 : a000000100e52738
r8 : 0000000000000031 r9 : fffffffffff00001 r10 : 0000000000000000
r11 : fffffffffff04c20 r12 : e000000016447b20 r13 : e000000016440000
r14 : 0000000000004000 r15 : 0000000000000001 r16 : fffffffffff04c18
r17 : e000000000014248 r18 : 0000000000000001 r19 : e000000000014b58
r20 : e00000001c418030 r21 : e00000001c418030 r22 : 0000000000000001
r23 : e0000000000152a8 r24 : e0000000000152a0 r25 : 0000000000000750
r26 : 0000000000000730 r27 : 0000000000000073 r28 : 0000000000000073
r29 : 0000000000000073 r30 : d6bf94d5e57a42bd r31 : e00000001c418078
Call Trace:
[<a00000010001ca20>] show_stack+0x40/0xa0
sp=e0000000164476b0 bsp=e000000016441260
[<a00000010001d320>] show_regs+0x840/0x880
sp=e000000016447880 bsp=e000000016441208
[<a0000001000415e0>] die+0x1c0/0x3c0
sp=e000000016447880 bsp=e0000000164411b8
[<a000000100041830>] die_if_kernel+0x50/0x80
sp=e0000000164478a0 bsp=e000000016441188
[<a000000100042f60>] ia64_bad_break+0x260/0x4a0
sp=e0000000164478a0 bsp=e000000016441160
[<a0000001000685a0>] xen_leave_kernel+0x0/0x3b0
sp=e000000016447950 bsp=e000000016441160
[<a00000010006a170>] HYPERVISOR_grant_table_op+0x170/0x280
sp=e000000016447b20 bsp=e000000016441108
[<a0000001006ae3c0>] dispatch_rw_block_io+0x640/0xd00
sp=e000000016447b20 bsp=e000000016441030
[<a0000001006af600>] tap_blkif_schedule+0x6c0/0x9c0
sp=e000000016447df0 bsp=e000000016440fd0
[<a0000001000bbfc0>] kthread+0x180/0x200
sp=e000000016447e20 bsp=e000000016440f98
[<a00000010001aed0>] kernel_thread_helper+0x30/0x60
sp=e000000016447e30 bsp=e000000016440f70
[<a0000001000110c0>] start_kernel_thread+0x20/0x40
sp=e000000016447e30 bsp=e000000016440f70
diff -r e06634ca24f6 buildconfigs/linux-defconfig_xen0_ia64
--- a/buildconfigs/linux-defconfig_xen0_ia64 Mon Oct 16 22:44:25 2006 -0400
+++ b/buildconfigs/linux-defconfig_xen0_ia64 Tue Oct 17 13:48:22 2006 -0400
@@ -1529,7 +1529,7 @@ CONFIG_XEN_XENBUS_DEV=y
CONFIG_XEN_XENBUS_DEV=y
CONFIG_XEN_BACKEND=y
CONFIG_XEN_BLKDEV_BACKEND=y
-# CONFIG_XEN_BLKDEV_TAP is not set
+CONFIG_XEN_BLKDEV_TAP=y
CONFIG_XEN_NETDEV_BACKEND=y
# CONFIG_XEN_NETDEV_PIPELINED_TRANSMITTER is not set
CONFIG_XEN_NETDEV_LOOPBACK=y
diff -r e06634ca24f6 buildconfigs/linux-defconfig_xen_ia64
--- a/buildconfigs/linux-defconfig_xen_ia64 Mon Oct 16 22:44:25 2006 -0400
+++ b/buildconfigs/linux-defconfig_xen_ia64 Tue Oct 17 13:48:32 2006 -0400
@@ -1535,7 +1535,7 @@ CONFIG_XEN_XENBUS_DEV=y
CONFIG_XEN_XENBUS_DEV=y
CONFIG_XEN_BACKEND=y
CONFIG_XEN_BLKDEV_BACKEND=y
-# CONFIG_XEN_BLKDEV_TAP is not set
+CONFIG_XEN_BLKDEV_TAP=y
CONFIG_XEN_NETDEV_BACKEND=y
# CONFIG_XEN_NETDEV_PIPELINED_TRANSMITTER is not set
CONFIG_XEN_NETDEV_LOOPBACK=y
diff -r e06634ca24f6 linux-2.6-xen-sparse/arch/ia64/xen/hypervisor.c
--- a/linux-2.6-xen-sparse/arch/ia64/xen/hypervisor.c Mon Oct 16 22:44:25
2006 -0400
+++ b/linux-2.6-xen-sparse/arch/ia64/xen/hypervisor.c Tue Oct 17 00:05:31
2006 -0400
@@ -1050,3 +1050,27 @@ EXPORT_SYMBOL_GPL(p2m_pte);
EXPORT_SYMBOL_GPL(p2m_pte);
EXPORT_SYMBOL_GPL(p2m_phystomach);
#endif
+
+/*
+ * XXX lookup_pte_fn() and create_lookup_pte_addr() are duplicated from
+ * arch/i386/mm/ioremap-xen.c; should these be consolidated?
+ */
+static int
+lookup_pte_fn(pte_t *pte, struct page *pmd_page, unsigned long addr,
+ void *data)
+{
+ uint64_t *ptep = (uint64_t *)data;
+ if (ptep)
+ *ptep = ((uint64_t)pfn_to_mfn(page_to_pfn(pmd_page)) <<
+ PAGE_SHIFT) | ((unsigned long)pte & ~PAGE_MASK);
+ return 0;
+}
+
+int
+create_lookup_pte_addr(struct mm_struct *mm, unsigned long address,
+ uint64_t *ptep)
+{
+ return apply_to_page_range(mm, address, PAGE_SIZE,
+ lookup_pte_fn, ptep);
+}
+EXPORT_SYMBOL(create_lookup_pte_addr);
diff -r e06634ca24f6 linux-2.6-xen-sparse/include/asm-ia64/hypervisor.h
--- a/linux-2.6-xen-sparse/include/asm-ia64/hypervisor.h Mon Oct 16
22:44:25 2006 -0400
+++ b/linux-2.6-xen-sparse/include/asm-ia64/hypervisor.h Tue Oct 17
00:07:29 2006 -0400
@@ -142,6 +142,11 @@ int privcmd_mmap(struct file * file, str
#endif /* !CONFIG_VMX_GUEST */
+struct mm_struct;
+int create_lookup_pte_addr(struct mm_struct *mm,
+ unsigned long address,
+ uint64_t *ptep);
+
#define __pte_ma(_x) ((pte_t) {(_x)}) /* unmodified use */
#define pfn_pte_ma(_x,_y) __pte_ma(0) /* unmodified use */
_______________________________________________
Xen-ia64-devel mailing list
Xen-ia64-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-ia64-devel
|