From: Ben Taylor <sol10x86@cox.net>
To: Qemu-devel@nongnu.org
Subject: [Qemu-devel] PATCH: floppy controller missing in acpi tables
Date: Tue, 16 May 2006 10:47:37 -0400 [thread overview]
Message-ID: <22186244.1147790858160.JavaMail.root@eastrmwml07.mgt.cox.net> (raw)
[-- Attachment #1: Type: text/plain, Size: 1161 bytes --]
This patch was created by Juergen Kiel, so to be clear I did not make this patch.
I did however, test it, with the current CVS code, and this patch to the ACPI
tables does allow a floppy drive to be seen by a Solaris 10/X86 guest.
Prior to this time, changes in Solaris 10 do not correctly enumerate the ISA
bus for the floppy, and therefore you could never add an Install Time Update
(ITU), such as the DiskUpdate on tools.de/solaris/itu/DU.zip which has a
modifed RTL8029 driver that works with Qemu on SolarisX86. Obviosly, if
you boot a Solaris 10/x86 install with -B acpi-user-options=0x0, you will not
see the floppy. (I see that a patch is in the works for OpenSolaris, so eventually
this will be fixed for good on Solaris).
Juergen comments:
I've experimented with the attached patch to add the PS/2 floppy controller,
serial and parallel ports to qemu-cvs's acpi tables, so that a Solaris x86
guest OS will see the /dev/diskette device.
Note: the file hw/acpi-dsdt.hex must be rebuilt using Intel's "iasl"
ACPI compiler. In the hw directory, run "iasl -tc acpi-dsdt.dsl". That
should build the acpi-dsdt.hex file from acpi-dsdt.dsl.
Ben
[-- Attachment #2: qemu-acpi.patch --]
[-- Type: text/x-patch, Size: 4168 bytes --]
diff -ru /tmp/qemu-cvs/hw/acpi-dsdt.dsl ./hw/acpi-dsdt.dsl
--- /tmp/qemu-cvs/hw/acpi-dsdt.dsl 2006-05-04 01:13:13.000000000 +0200
+++ ./hw/acpi-dsdt.dsl 2006-05-14 20:21:02.046226910 +0200
@@ -161,8 +161,9 @@
}
}
- /* PIIX3 ISA bridge */
Scope(\_SB.PCI0) {
+
+ /* PIIX3 ISA bridge */
Device (ISA) {
Name (_ADR, 0x00010000)
@@ -202,6 +203,7 @@
}
}
+ /* PS/2 mouse */
Device (MOU)
{
Name (_HID, EisaId ("PNP0F13"))
@@ -219,7 +221,132 @@
Return (TMP)
}
}
+
+ /* PS/2 floppy controller */
+ Device (FDC0)
+ {
+ Name (_HID, EisaId ("PNP0700"))
+ Method (_STA, 0, NotSerialized)
+ {
+ Return (0x0F)
+ }
+ Method (_CRS, 0, NotSerialized)
+ {
+ Name (BUF0, ResourceTemplate ()
+ {
+ IO (Decode16, 0x03F2, 0x03F2, 0x00, 0x04)
+ IO (Decode16, 0x03F7, 0x03F7, 0x00, 0x01)
+ IRQNoFlags () {6}
+ DMA (Compatibility, NotBusMaster, Transfer8) {2}
+ })
+ Return (BUF0)
+ }
+ }
+
+ /* Parallel port */
+ Device (LPT)
+ {
+ Name (_HID, EisaId ("PNP0400"))
+ Method (_STA, 0, NotSerialized)
+ {
+ Store (\_SB.PCI0.PX13.DRSA, Local0)
+ And (Local0, 0x80000000, Local0)
+ If (LEqual (Local0, 0))
+ {
+ Return (0x00)
+ }
+ Else
+ {
+ Return (0x0F)
+ }
+ }
+ Method (_CRS, 0, NotSerialized)
+ {
+ Name (BUF0, ResourceTemplate ()
+ {
+ IO (Decode16, 0x0378, 0x0378, 0x08, 0x08)
+ IRQNoFlags () {7}
+ })
+ Return (BUF0)
+ }
+ }
+
+ /* Serial Ports */
+ Device (COM1)
+ {
+ Name (_HID, EisaId ("PNP0501"))
+ Name (_UID, 0x01)
+ Method (_STA, 0, NotSerialized)
+ {
+ Store (\_SB.PCI0.PX13.DRSC, Local0)
+ And (Local0, 0x08000000, Local0)
+ If (LEqual (Local0, 0))
+ {
+ Return (0x00)
+ }
+ Else
+ {
+ Return (0x0F)
+ }
+ }
+ Method (_CRS, 0, NotSerialized)
+ {
+ Name (BUF0, ResourceTemplate ()
+ {
+ IO (Decode16, 0x03F8, 0x03F8, 0x00, 0x08)
+ IRQNoFlags () {4}
+ })
+ Return (BUF0)
+ }
+ }
+
+ Device (COM2)
+ {
+ Name (_HID, EisaId ("PNP0501"))
+ Name (_UID, 0x02)
+ Method (_STA, 0, NotSerialized)
+ {
+ Store (\_SB.PCI0.PX13.DRSC, Local0)
+ And (Local0, 0x80000000, Local0)
+ If (LEqual (Local0, 0))
+ {
+ Return (0x00)
+ }
+ Else
+ {
+ Return (0x0F)
+ }
+ }
+ Method (_CRS, 0, NotSerialized)
+ {
+ Name (BUF0, ResourceTemplate ()
+ {
+ IO (Decode16, 0x02F8, 0x02F8, 0x00, 0x08)
+ IRQNoFlags () {3}
+ })
+ Return (BUF0)
+ }
+ }
}
+
+ /* PIIX4 PM */
+ Device (PX13) {
+ Name (_ADR, 0x00010003)
+
+ OperationRegion (P13C, PCI_Config, 0x5c, 0x24)
+ Field (P13C, DWordAcc, NoLock, Preserve)
+ {
+ DRSA, 32,
+ DRSB, 32,
+ DRSC, 32,
+ DRSE, 32,
+ DRSF, 32,
+ DRSG, 32,
+ DRSH, 32,
+ DRSI, 32,
+ DRSJ, 32
+ }
+ }
}
/* PCI IRQs */
diff -ru /tmp/qemu-cvs/hw/acpi.c ./hw/acpi.c
--- /tmp/qemu-cvs/hw/acpi.c 2006-05-08 15:38:46.000000000 +0200
+++ ./hw/acpi.c 2006-05-14 18:53:08.528614455 +0200
@@ -241,7 +241,6 @@
pci_conf[0x0b] = 0x06; // bridge device
pci_conf[0x0e] = 0x00; // header_type
pci_conf[0x3d] = 0x01; // interrupt pin 1
- pci_conf[0x60] = 0x10; // release number
pm_io_base = PM_IO_BASE;
pci_conf[0x40] = pm_io_base | 1;
@@ -254,6 +253,11 @@
register_ioport_write(SMI_CMD_IO_ADDR, 1, 1, smi_cmd_writeb, s);
register_ioport_write(ACPI_DBG_IO_ADDR, 4, 4, acpi_dbg_writel, s);
+ pci_conf[0x5f] = (parallel_hds[0] != NULL ? 0x80 : 0) | 0x10;
+ pci_conf[0x63] = 0x60;
+ pci_conf[0x67] = (serial_hds[0] != NULL ? 0x08 : 0) |
+ (serial_hds[1] != NULL ? 0x90 : 0);
+
s->tmr_timer = qemu_new_timer(vm_clock, pm_tmr_timer, s);
piix4_pm_state = s;
}
next reply other threads:[~2006-05-16 14:47 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-05-16 14:47 Ben Taylor [this message]
2006-06-03 11:08 ` [Qemu-devel] PATCH: floppy controller missing in acpi tables Paul Jakma
2006-06-12 15:20 ` Paul Jakma
-- strict thread matches above, loose matches on Subject: below --
2006-06-13 1:20 Ben Taylor
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=22186244.1147790858160.JavaMail.root@eastrmwml07.mgt.cox.net \
--to=sol10x86@cox.net \
--cc=Qemu-devel@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).