[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-devel] RE: [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

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.