From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1N973j-0006r2-LP for qemu-devel@nongnu.org; Fri, 13 Nov 2009 20:04:11 -0500 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1N973f-0006qH-6U for qemu-devel@nongnu.org; Fri, 13 Nov 2009 20:04:11 -0500 Received: from [199.232.76.173] (port=35020 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1N973f-0006qD-1M for qemu-devel@nongnu.org; Fri, 13 Nov 2009 20:04:07 -0500 Received: from mail-yw0-f176.google.com ([209.85.211.176]:53336) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1N973e-0006ZZ-J5 for qemu-devel@nongnu.org; Fri, 13 Nov 2009 20:04:06 -0500 Received: by ywh6 with SMTP id 6so3365211ywh.4 for ; Fri, 13 Nov 2009 17:04:06 -0800 (PST) MIME-Version: 1.0 From: Artyom Tarasenko Date: Sat, 14 Nov 2009 02:03:38 +0100 Message-ID: Content-Type: multipart/mixed; boundary=001485f90d96e8361704784a5943 Subject: [Qemu-devel] [PATCH] sparc32 irq clearing (guest Solaris performance+NetBSD) fix List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel , Blue Swirl --001485f90d96e8361704784a5943 Content-Type: text/plain; charset=ISO-8859-1 According to NCR89C105 documentation http://www.ibiblio.org/pub/historic-linux/early-ports/Sparc/NCR/NCR89C105.txt Interrupts are cleared by disabling and then re-enabling them. This patch implements the specified behaviour. The most visible effects: - NetBSD 1.3.3 - 1.5.3 boots successfully - Solaris 2.5.1 - 7 boots ~1500 times faster (~20 seconds instead of ~8 hours) Signed-off-by: Artyom Tarasenko --- diff --git a/hw/slavio_intctl.c b/hw/slavio_intctl.c index 9680392..779c661 100644 --- a/hw/slavio_intctl.c +++ b/hw/slavio_intctl.c @@ -177,19 +177,19 @@ static void slavio_intctlm_mem_writel(void *opaque, target_phys_addr_t addr, saddr = addr >> 2; DPRINTF("write system reg 0x" TARGET_FMT_plx " = %x\n", addr, val); switch (saddr) { - case 2: // clear (enable) + case 2: // clear (enable, clear formerly disabled pending) // Force clear unused bits val &= MASTER_IRQ_MASK; + s->intregm_pending &= (s->intregm_disabled & val); s->intregm_disabled &= ~val; DPRINTF("Enabled master irq mask %x, curmask %x\n", val, s->intregm_disabled); slavio_check_interrupts(s, 1); break; - case 3: // set (disable, clear pending) + case 3: // set (disable, do not clear pending) // Force clear unused bits val &= MASTER_IRQ_MASK; s->intregm_disabled |= val; - s->intregm_pending &= ~val; slavio_check_interrupts(s, 1); DPRINTF("Disabled master irq mask %x, curmask %x\n", val, s->intregm_disabled); --001485f90d96e8361704784a5943 Content-Type: application/octet-stream; name="0001-slavio-clear-pending-on-enable.patch" Content-Disposition: attachment; filename="0001-slavio-clear-pending-on-enable.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_g1zo6svf0 U2lnbmVkLW9mZi1ieTogQXJ0eW9tIFRhcmFzZW5rbyA8YXRhcjRxZW11QGdtYWlsLmNvbT4KLS0t CmRpZmYgLS1naXQgYS9ody9zbGF2aW9faW50Y3RsLmMgYi9ody9zbGF2aW9faW50Y3RsLmMKaW5k ZXggOTY4MDM5Mi4uNzc5YzY2MSAxMDA2NDQKLS0tIGEvaHcvc2xhdmlvX2ludGN0bC5jCisrKyBi L2h3L3NsYXZpb19pbnRjdGwuYwpAQCAtMTc3LDE5ICsxNzcsMTkgQEAgc3RhdGljIHZvaWQgc2xh dmlvX2ludGN0bG1fbWVtX3dyaXRlbCh2b2lkICpvcGFxdWUsIHRhcmdldF9waHlzX2FkZHJfdCBh ZGRyLAogICAgIHNhZGRyID0gYWRkciA+PiAyOwogICAgIERQUklOVEYoIndyaXRlIHN5c3RlbSBy ZWcgMHgiIFRBUkdFVF9GTVRfcGx4ICIgPSAleFxuIiwgYWRkciwgdmFsKTsKICAgICBzd2l0Y2gg KHNhZGRyKSB7Ci0gICAgY2FzZSAyOiAvLyBjbGVhciAoZW5hYmxlKQorICAgIGNhc2UgMjogLy8g Y2xlYXIgKGVuYWJsZSwgY2xlYXIgZm9ybWVybHkgZGlzYWJsZWQgcGVuZGluZykKICAgICAgICAg Ly8gRm9yY2UgY2xlYXIgdW51c2VkIGJpdHMKICAgICAgICAgdmFsICY9IE1BU1RFUl9JUlFfTUFT SzsKKyAgICAgICAgcy0+aW50cmVnbV9wZW5kaW5nICY9IChzLT5pbnRyZWdtX2Rpc2FibGVkICYg dmFsKTsKICAgICAgICAgcy0+aW50cmVnbV9kaXNhYmxlZCAmPSB+dmFsOwogICAgICAgICBEUFJJ TlRGKCJFbmFibGVkIG1hc3RlciBpcnEgbWFzayAleCwgY3VybWFzayAleFxuIiwgdmFsLAogICAg ICAgICAgICAgICAgIHMtPmludHJlZ21fZGlzYWJsZWQpOwogICAgICAgICBzbGF2aW9fY2hlY2tf aW50ZXJydXB0cyhzLCAxKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSAzOiAvLyBzZXQgKGRp c2FibGUsIGNsZWFyIHBlbmRpbmcpCisgICAgY2FzZSAzOiAvLyBzZXQgKGRpc2FibGUsIGRvIG5v dCBjbGVhciBwZW5kaW5nKQogICAgICAgICAvLyBGb3JjZSBjbGVhciB1bnVzZWQgYml0cwogICAg ICAgICB2YWwgJj0gTUFTVEVSX0lSUV9NQVNLOwogICAgICAgICBzLT5pbnRyZWdtX2Rpc2FibGVk IHw9IHZhbDsKLSAgICAgICAgcy0+aW50cmVnbV9wZW5kaW5nICY9IH52YWw7CiAgICAgICAgIHNs YXZpb19jaGVja19pbnRlcnJ1cHRzKHMsIDEpOwogICAgICAgICBEUFJJTlRGKCJEaXNhYmxlZCBt YXN0ZXIgaXJxIG1hc2sgJXgsIGN1cm1hc2sgJXhcbiIsIHZhbCwKICAgICAgICAgICAgICAgICBz LT5pbnRyZWdtX2Rpc2FibGVkKTsK --001485f90d96e8361704784a5943--