WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-devel

[Xen-devel] RE: [PATCH] pci-ioapic-x86-64.patch

To: "Sharma, Arun" <arun.sharma@xxxxxxxxx>, "Ian Pratt" <Ian.Pratt@xxxxxxxxxxxx>, "Keir Fraser" <Keir.Fraser@xxxxxxxxxxxx>
Subject: [Xen-devel] RE: [PATCH] pci-ioapic-x86-64.patch
From: "Nakajima, Jun" <jun.nakajima@xxxxxxxxx>
Date: Sat, 21 May 2005 00:19:52 -0700
Cc: xen-devel@xxxxxxxxxxxxxxxxxxx
Delivery-date: Sat, 21 May 2005 07:19:29 +0000
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
List-help: <mailto:xen-devel-request@lists.xensource.com?subject=help>
List-id: Xen developer discussion <xen-devel.lists.xensource.com>
List-post: <mailto:xen-devel@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=unsubscribe>
Sender: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx
Thread-index: AcVdwQV4H93a+OQVROG+kPN6KK5wyQAELu7A
Thread-topic: [PATCH] pci-ioapic-x86-64.patch
Arun Sharma wrote:
> Enable PCI, IOAPIC and ACPI on domain 0 for x86-64.
> 
> This patch is based on apic.c,io_apic.c and mpparse.c on x86-64. It
> applies changes analogous to the i386 files for paravirtualization.
> 
> The patch was tested on UP and DP with acpi=on and off. We did this
> on a 5/10 bk tree + Jun's fixes. The latest bk tree doesn't boot yet
> and needs more work.

Now I've got it working. I believe this is a bug in Xen introduced very 
recently. With this additional _hack_ attached, I was able to restore x86-64 
XenLinux with latest bk, and now ACPI works with x86-64 Linux (see below). Keir 
should fix the bug properly.

Basically what's happening is that x86-64 xenlinux cannot access 
machine-to-phys mapping, which is critical info to the guest. 

config.h:
/* Slot 256: read-only guest-accessible machine-to-phys translation table. */
#define RO_MPT_VIRT_START       (PML4_ADDR(256))
#define RO_MPT_VIRT_END         (RO_MPT_VIRT_START + PML4_ENTRY_BYTES/2)

At this point, as you see, L3 does not have USER bit, and x86-64 XenLinux 
cannot access it; it used to be able to do that until recently. My hack just 
adds USER bit upon #PF to L3 (see the patch attaced). 

(XEN) Pagetable walk from ffff8000000417c4:
(XEN)  L4 = 0000000000ffe065
(XEN)   L3 = 000000000167e063
(XEN) New L3 = 000000000167e067
(XEN)    L2 = 000000003f4001e7 (2MB)

---
 __  __            _____  ___         _                _
 \ \/ /___ _ __   |___ / / _ \     __| | _____   _____| |
  \  // _ \ '_ \    |_ \| | | |__ / _` |/ _ \ \ / / _ \ |
  /  \  __/ | | |  ___) | |_| |__| (_| |  __/\ V /  __/ |
 /_/\_\___|_| |_| |____(_)___/    \__,_|\___| \_/ \___|_|

 http://www.cl.cam.ac.uk/netos/xen
 University of Cambridge Computer Laboratory

 Xen version 3.0-devel (jnakajim@xxxxxxxxxxxx) (gcc version 3.4.2 20041017 (Red
Hat 3.4.2-6.fc3)) Fri May 20 23:21:16 PDT 2005
 Latest ChangeSet: 2005/05/20 16:06:28 1.1484 428dfcf4ShUaO_5EW8otOGE_3NKxvQ

(XEN) Physical RAM map:
(XEN)  0000000000000000 - 000000000009fc00 (usable)
(XEN)  000000000009fc00 - 00000000000a0000 (reserved)
(XEN)  00000000000e6000 - 0000000000100000 (reserved)
(XEN)  0000000000100000 - 000000003f630000 (usable)
(XEN)  000000003f630000 - 000000003f640000 (ACPI data)
(XEN)  000000003f640000 - 000000003f6f0000 (ACPI NVS)
(XEN)  000000003f6f0000 - 000000003f800000 (reserved)
(XEN)  00000000cff00000 - 00000000f0000000 (reserved)
(XEN)  00000000fed13000 - 00000000fed1a000 (reserved)
(XEN)  00000000fed1c000 - 00000000fed90000 (reserved)
(XEN) System RAM: 1013MB (1038140kB)
(XEN) Xen heap: 14MB (14860kB)
(XEN) CPU0: Before vendor init, caps: bfebfbff 20100800 00000000, vendor = 0
(XEN) CPU#0: Hyper-Threading is disabled
(XEN) VMXON is done
(XEN) CPU caps: bfebfbff 20100800 00000000 00000000
(XEN) found SMP MP-table at 000ff780
(XEN) ACPI: RSDP (v000 ACPIAM                                ) @ 0x00000000000f5
5c0
(XEN) ACPI: RSDT (v001 INTEL  @ÃS¸¨š
(XEN)  0x20041130 MSFT 0x00000097) @ 0x000000003f630000
(XEN) ACPI: FADT (v002 INTEL  @ÃS¸¨š
(XEN)  0x20041130 MSFT 0x00000097) @ 0x000000003f630200
(XEN) ACPI: MADT (v001 INTEL  @ÃS¸¨š
(XEN)  0x20041130 MSFT 0x00000097) @ 0x000000003f630390
(XEN) ACPI: MCFG (v001 INTEL  @ÃS¸¨š
(XEN)  0x20041130 MSFT 0x00000097) @ 0x000000003f630400
(XEN) ACPI: MSEG (v001 INTEL  @ÃS¸¨š
(XEN)  0x20041130 MSFT 0x00000097) @ 0x000000003f630440
(XEN) ACPI: WDDT (v001 INTEL  OEMWDDT  0x00000001 INTL 0x02002026) @ 0x000000003
f6363c0
(XEN) ACPI: DSDT (v001 INTEL  @ÃS¸¨š
(XEN)  0x00000001 INTL 0x02002026) @ 0x0000000000000000
(XEN) ACPI: Local APIC address 0xfee00000
(XEN) ACPI: LAPIC (acpi_id[0x01] lapic_id[0x00] enabled)
(XEN) Processor #0 15:4 APIC version 20
(XEN) ACPI: LAPIC (acpi_id[0x02] lapic_id[0x81] disabled)
(XEN) ACPI: LAPIC_NMI (acpi_id[0x01] dfl dfl lint[0x1])
(XEN) ACPI: LAPIC_NMI (acpi_id[0x02] dfl dfl lint[0x1])
(XEN) ACPI: IOAPIC (id[0x01] address[0xfec00000] gsi_base[0])
(XEN) IOAPIC[0]: apic_id 1, version 32, address 0xfec00000, GSI 0-23
(XEN) ACPI: INT_SRC_OVR (bus 0 bus_irq 0 global_irq 2 dfl dfl)
(XEN) ACPI: INT_SRC_OVR (bus 0 bus_irq 9 global_irq 9 high level)
(XEN) ACPI: IRQ0 used by override.
(XEN) ACPI: IRQ2 used by override.
(XEN) ACPI: IRQ9 used by override.
(XEN) Enabling APIC mode:  Flat.  Using 1 I/O APICs
(XEN) Using ACPI (MADT) for SMP configuration information
(XEN) Using scheduler: Borrowed Virtual Time (bvt)
(XEN) Initializing CPU#0
(XEN) Detected 2992.621 MHz processor.
(XEN) CPU0 booted
(XEN) Error: only one processor found.
(XEN) ENABLING IO-APIC IRQs
(XEN) ..TIMER: vector=0x31 pin1=2 pin2=-1
(XEN) Time init:
(XEN) .... cpu_freq:    00000000:B25FC8E8
(XEN) .... scale:       00000001:562CC4D1
(XEN) .... Wall Clock:  1116632727s 140000us
(XEN) mtrr: v2.0 (20020519)
(XEN) *** LOADING DOMAIN 0 ***
(XEN) Xen-ELF header found: 'GUEST_OS=linux,GUEST_VER=2.6,XEN_VER=3.0,VIRT_BASE=
0xffffffff80100000,LOADER=generic'
(XEN) PHYSICAL MEMORY ARRANGEMENT:
(XEN)  Dom0 alloc.:   0000000010000000->0000000020000000 (62464 pages to be allo
cated)
(XEN) VIRTUAL MEMORY ARRANGEMENT:
(XEN)  Loaded kernel: ffffffff80100000->ffffffff80570086
(XEN)  Init. ramdisk: ffffffff80571000->ffffffff80571000
(XEN)  Phys-Mach map: ffffffff80571000->ffffffff805ee000
(XEN)  Page tables:   ffffffff805ee000->ffffffff805f5000
(XEN)  Start info:    ffffffff805f5000->ffffffff805f6000
(XEN)  Boot stack:    ffffffff805f6000->ffffffff805f7000
(XEN)  TOTAL:         ffffffff80000000->ffffffff80800000
(XEN)  ENTRY ADDRESS: ffffffff80100000
(XEN) Scrubbing Free RAM: ...........done.
(XEN) *** Serial input -> DOM0 (type 'CTRL-a' three times to switch input to Xen
).
(XEN) Pagetable walk from ffff8000000417c4:
(XEN)  L4 = 0000000000ffe065
(XEN)   L3 = 000000000167e063
(XEN) New L3 = 000000000167e067
(XEN)    L2 = 000000003f4001e7 (2MB)
Linux version 2.6.11.10-xen0 (jnakajim@xxxxxxxxxxxxxxxxxxxxxx) (gcc version 3.4.
2 20041017 (Red Hat 3.4.2-6.fc3)) #1 Fri May 20 18:50:14 PDT 2005
Registering memory for bootmem: from  a00000, size = 1ea00000
 0x20041130 MSFT 0x00000097) @ 0x000000003f630000
 0x20041130 MSFT 0x00000097) @ 0x000000003f630200
 0x20041130 MSFT 0x00000097) @ 0x000000003f630390
 0x20041130 MSFT 0x00000097) @ 0x000000003f630400
 0x20041130 MSFT 0x00000097) @ 0x000000003f630440
 0x00000001 INTL 0x02002026) @ 0x0000000000000000
ACPI: LAPIC (acpi_id[0x01] lapic_id[0x00] enabled)
ACPI: LAPIC (acpi_id[0x02] lapic_id[0x81] disabled)
ACPI: LAPIC_NMI (acpi_id[0x01] dfl dfl lint[0x1])
ACPI: LAPIC_NMI (acpi_id[0x02] dfl dfl lint[0x1])
ACPI: IOAPIC (id[0x01] address[0xfec00000] gsi_base[0])
IOAPIC[0]: apic_id 1, version 32, address 0xfec00000, GSI 0-23
ACPI: INT_SRC_OVR (bus 0 bus_irq 0 global_irq 2 dfl dfl)
ACPI: INT_SRC_OVR (bus 0 bus_irq 9 global_irq 9 high level)
Setting APIC routing to flat
Using ACPI (MADT) for SMP configuration information
Built 1 zonelists
Kernel command line: root=/dev/sda2 ro console=ttyS0,115200n8
Initializing CPU#0
PID hash table entries: 2048 (order: 11, 65536 bytes)
Xen reported: 2992.621 MHz processor.
Using tsc for high-res timesource
Console: colour VGA+ 80x25
Dentry cache hash table entries: 65536 (order: 7, 524288 bytes)
Inode-cache hash table entries: 32768 (order: 6, 262144 bytes)
Memory: 493568k/512000k available (2596k kernel code, 7872k reserved, 939k data,
 428k init)
Mount-cache hash table entries: 256 (order: 0, 4096 bytes)
CPU: Trace cache: 12K uops, L1 D cache: 16K
CPU: L2 cache: 1024K
CPU:                    Genuine Intel(R) CPU 3.00GHz stepping 02
NET: Registered protocol family 16
PCI: Using configuration type 1
ACPI: Subsystem revision 20050211
ACPI: Interpreter enabled
ACPI: Using IOAPIC for interrupt routing
ACPI: PCI Root Bridge [PCI0] (00:00)
PCI: Probing PCI hardware (bus 00)
PCI: Ignoring BAR0-3 of IDE controller 0000:00:1f.1
PCI: Transparent bridge - 0000:00:1e.0
ACPI: Power Resource [URP1] (off)
ACPI: Power Resource [FDDP] (off)
ACPI: Power Resource [LPTP] (off)
ACPI: Power Resource [URP2] (off)
ACPI: PCI Interrupt Link [LNKA] (IRQs 3 4 5 6 7 9 10 *11 12 14 15)
ACPI: PCI Interrupt Link [LNKB] (IRQs 3 4 5 6 7 9 10 11 12 14 15) *0, disabled.
ACPI: PCI Interrupt Link [LNKC] (IRQs 3 4 *5 6 7 9 10 11 12 14 15)
ACPI: PCI Interrupt Link [LNKD] (IRQs 3 4 5 6 7 9 *10 11 12 14 15)
ACPI: PCI Interrupt Link [LNKE] (IRQs 3 4 5 6 7 *9 10 11 12 14 15)
ACPI: PCI Interrupt Link [LNKF] (IRQs 3 4 5 6 7 9 10 11 12 14 15) *0, disabled.
ACPI: PCI Interrupt Link [LNKG] (IRQs 3 4 5 6 7 9 10 11 12 14 15) *0, disabled.
ACPI: PCI Interrupt Link [LNKH] (IRQs 3 4 5 6 7 *9 10 11 12 14 15)
xen_mem: Initialising balloon driver.
SCSI subsystem initialized
PCI: Using ACPI for IRQ routing
** PCI interrupts are no longer routed automatically.  If this
** causes a device to stop working, it is probably because the
** driver failed to call pci_enable_device().  As a temporary
** workaround, the "pci=routeirq" argument restores the old
** behavior.  If this argument makes the device work again,
** please email the output of "lspci" to bjorn.helgaas@xxxxxx
** so I can fix the driver.
PCI: IRQ init
    ACPI-1138: *** Error: Method execution failed [\MCTH] (Node ffff880000a34f80
), AE_AML_BUFFER_LIMIT
    ACPI-1138: *** Error: Method execution failed [\OSFL] (Node ffff8800017bddc0
), AE_AML_BUFFER_LIMIT
    ACPI-1138: *** Error: Method execution failed [\_SB_.RMEM._CRS] (Node ffff88
0000a29740), AE_AML_BUFFER_LIMIT
    ACPI-0158: *** Error: Method execution failed [\_SB_.RMEM._CRS] (Node ffff88
0000a29740), AE_AML_BUFFER_LIMIT
Grant table initialized
Initializing Cryptographic API
serio: i8042 AUX port at 0x60,0x64 irq 12
serio: i8042 KBD port at 0x60,0x64 irq 1
io scheduler noop registered
io scheduler anticipatory registered
io scheduler deadline registered
io scheduler cfq registered
Floppy drive(s): fd0 is 1.44M
floppy0: no floppy controllers found
RAMDISK driver initialized: 16 RAM disks of 16384K size 1024 blocksize
loop: loaded (max 8 devices)
HP CISS Driver (v 2.6.4)
Intel(R) PRO/1000 Network Driver - version 5.6.10.1-k2
Copyright (c) 1999-2004 Intel Corporation.
pcnet32.c:v1.30i 06.28.2004 tsbogend@xxxxxxxxxxxxxxxx
e100: Intel(R) PRO/100 Network Driver, 3.3.6-k2-NAPI
e100: Copyright(c) 1999-2004 Intel Corporation
ACPI: PCI interrupt 0000:05:08.0[A] -> GSI 20 (level, low) -> IRQ 20
e100: eth0: e100_probe: addr 0xff8ff000, irq 20, MAC addr 00:0C:F1:FE:01:F9
tun: Universal TUN/TAP device driver, 1.6
tun: (C) 1999-2004 Max Krasnyansky <maxk@xxxxxxxxxxxx>
Xen virtual console successfully installed as ttyS0
Event-channel device installed.
Blkif backend is using grant tables.
Initialising Xen netif backend
Blkif frontend is using grant tables.
Uniform Multi-Platform E-IDE driver Revision: 7.00alpha2
ide: Assuming 33MHz system bus speed for PIO modes; override with idebus=xx
ICH6: IDE controller at PCI slot 0000:00:1f.1
ACPI: PCI interrupt 0000:00:1f.1[A] -> GSI 18 (level, low) -> IRQ 18
ICH6: chipset revision 3
ICH6: not 100% native mode: will probe irqs later
    ide0: BM-DMA at 0xffa0-0xffa7, BIOS settings: hda:DMA, hdb:pio
    ide1: BM-DMA at 0xffa8-0xffaf, BIOS settings: hdc:pio, hdd:pio
hda: TEAC DW-552G, ATAPI CD/DVD-ROM drive
ide0 at 0x1f0-0x1f7,0x3f6 on irq 14
hda: ATAPI 52X DVD-ROM CD-R/RW drive, 2048kB Cache, UDMA(33)
Uniform CD-ROM driver Revision: 3.20
Red Hat/Adaptec aacraid driver (1.1.2-lk2 May 20 2005)
3ware Storage Controller device driver for Linux v1.26.02.000.
ACPI: PCI interrupt 0000:00:1f.2[B] -> GSI 19 (level, low) -> IRQ 19
ata1: SATA max UDMA/133 cmd 0xE800 ctl 0xE402 bmdma 0xD800 irq 19
ata2: SATA max UDMA/133 cmd 0xE000 ctl 0xDC02 bmdma 0xD808 irq 19
ata1: dev 0 ATA, max UDMA/133, 234441648 sectors: lba48
ata1: dev 0 configured for UDMA/133
scsi0 : ata_piix
ATA: abnormal status 0x7F on port 0xE007
ata2: disabling port
scsi1 : ata_piix
  Vendor: ATA       Model: ST3120026AS       Rev: 3.05
  Type:   Direct-Access                      ANSI SCSI revision: 05
SCSI device sda: 234441648 512-byte hdwr sectors (120034 MB)
SCSI device sda: drive cache: write back
SCSI device sda: 234441648 512-byte hdwr sectors (120034 MB)
SCSI device sda: drive cache: write back
 sda: sda1 sda2 sda3 sda4 < sda5 >
Attached scsi disk sda at scsi0, channel 0, id 0, lun 0
Fusion MPT base driver 3.01.18
Copyright (c) 1999-2004 LSI Logic Corporation
Fusion MPT SCSI Host driver 3.01.18
mice: PS/2 mouse device common for all mice
input: AT Translated Set 2 keyboard on isa0060/serio0
input: PS/2 Generic Mouse on isa0060/serio1
NET: Registered protocol family 2
IP: routing cache hash table of 4096 buckets, 32Kbytes
TCP established hash table entries: 16384 (order: 5, 131072 bytes)
TCP bind hash table entries: 16384 (order: 5, 131072 bytes)
TCP: Hash tables configured (established 16384 bind 16384)
NET: Registered protocol family 1
NET: Registered protocol family 17
Bridge firewalling registered
kjournald starting.  Commit interval 5 seconds
EXT3-fs: mounted filesystem with ordered data mode.
VFS: Mounted root (ext3 filesystem) readonly.
modprobe: FATAL: Could not load /lib/modules/2.6.11.10-xen0/modules.dep: No such
 file or directory

INIT: version 2.85 booting
                Welcome to Fedora Core
                Press 'I' to enter interactive startup.
Starting udev:  [FAILED]
Initializing hardware...  storage network audio done[  OK  ]
raidautorun: failed to open /dev/md0: 6
Configuring kernel parameters:  [  OK  ]
Cannot access the Hardware Clock via any known method.
Use the --debug option to see the details of our search for an access method.
Setting clock  (localtime): Fri May 20 16:45:50 PDT 2005 [  OK  ]
Setting hostname localhost.localdomain:  [  OK  ]
Checking root filesystem
[/sbin/fsck.ext3 (1) -- /] fsck.ext3 -a /dev/sda2
/: clean, 156397/2626560 files, 1025968/5242880 blocks
[  OK  ]
Remounting root filesystem in read-write mode:  [  OK  ]
Checking filesystems
Checking all file systems.
[/sbin/fsck.ext3 (1) -- /boot] fsck.ext3 -a /dev/sda1
/boot: clean, 50/64256 files, 42896/257008 blocks
[  OK  ]
Mounting local filesystems:  [  OK  ]
Enabling local filesystem quotas:  [  OK  ]
Enabling swap space:  [  OK  ]
INIT: Entering runlevel: 3
Entering non-interactive startup
Setting network parameters:  [  OK  ]
Bringing up loopback interface:  [  OK  ]
Bringing up interface eth0:  [  OK  ]
Starting system logger: [  OK  ]
Starting kernel logger: [  OK  ]
Starting portmap: [  OK  ]
Starting sshd:[  OK  ]
Starting xinetd: [  OK  ]
Starting console mouse services: [  OK  ]
Starting crond: [  OK  ]
Starting anacron: [  OK  ]
Starting atd: [  OK  ]
Starting system message bus: [  OK  ]
...






Attachment: workaround.patch
Description: workaround.patch

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
<Prev in Thread] Current Thread [Next in Thread>