Please test: ACPI-CA import 20050408
Dan Nelson
dnelson at allantgroup.com
Fri Apr 15 10:36:30 PDT 2005
In the last episode (Apr 15), Marcel Moolenaar said:
> On Apr 15, 2005, at 9:28 AM, Mark Santcroos wrote:
> >On Fri, Apr 15, 2005 at 09:20:52AM -0700, Marcel Moolenaar wrote:
> >>BTW: Is ACPICA getting slower?
> >
> > Might be. I don't have numbers on that. I guess we're still
> > focusing on functionality and not so much on speed. Do you have a
> > concrete area where you think we are loosing performance?
>
> No, not yet. It's just that there are 2 "dead" spots in the booting
> process of the plutos we have in the cluster and these "dead" spots
> appeared to be longer. I think there's a lot of AML interpretation
> going on during that time, but I might be wrong.
What I have personally seen is a long delay in bus_alloc_resource() on
some older Dell machines (desktop and laptop, both under 500Mhz). If I
apply the attached patch, I see between 15 and 20 rows of identical
output, and each call to b_a_r takes a noticeable fraction of a second
(i.e. the cursor spends most of its time after an IRQ, not after a 'y'
or 'n'.) The delays probably add 45 seconds total to the boot time.
Newer systems will just generate 4 or 5 lines total for the entire boot
process.
--
Dan Nelson
dnelson at allantgroup.com
-------------- next part --------------
Index: acpi_pci_link.c
===================================================================
RCS file: /home/ncvs/src/sys/dev/acpica/acpi_pci_link.c,v
retrieving revision 1.24.2.6
diff -u -p -r1.24.2.6 acpi_pci_link.c
--- acpi_pci_link.c 7 Nov 2004 20:24:05 -0000 1.24.2.6
+++ acpi_pci_link.c 9 Nov 2004 03:43:52 -0000
@@ -804,17 +804,22 @@ acpi_pci_link_update_irq_penalty(device_
/* XXX try to get this IRQ in non-sharable mode. */
rid = 0;
+ printf("%d", irq);
res = bus_alloc_resource(dev, SYS_RES_IRQ,
&rid, irq, irq, 1, 0);
if (res != NULL) {
+ printf("y");
bus_release_resource(dev, SYS_RES_IRQ,
rid, res);
+ printf(" ");
} else {
/* this is in use, give 10. */
irq_penalty[irq] += 10;
+ printf("n ");
}
}
+ printf("\n");
/* initialize `sorted' possible IRQs. */
bcopy(link->interrupts, link->sorted_irq,
sizeof(link->sorted_irq));
More information about the freebsd-acpi
mailing list