From owner-freebsd-virtualization@FreeBSD.ORG Thu Jan 2 20:22:01 2014 Return-Path: Delivered-To: virtualization@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 838BD2F9 for ; Thu, 2 Jan 2014 20:22:01 +0000 (UTC) Received: from bigwig.baldwin.cx (bigwig.baldwin.cx [IPv6:2001:470:1f11:75::1]) (using TLSv1 with cipher ADH-CAMELLIA256-SHA (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 1FE681F23 for ; Thu, 2 Jan 2014 20:22:01 +0000 (UTC) Received: from jhbbsd.localnet (unknown [209.249.190.124]) by bigwig.baldwin.cx (Postfix) with ESMTPSA id 2A2BDB9B3; Thu, 2 Jan 2014 15:22:00 -0500 (EST) From: John Baldwin To: Neel Natu Subject: Re: [PATCH] Rework DSDT generation in bhyve Date: Thu, 2 Jan 2014 15:21:43 -0500 User-Agent: KMail/1.13.5 (FreeBSD/8.4-CBSD-20130906; KDE/4.5.5; amd64; ; ) References: <201312271205.54102.jhb@freebsd.org> In-Reply-To: MIME-Version: 1.0 Content-Type: Text/Plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit Message-Id: <201401021521.43862.jhb@freebsd.org> X-Greylist: Sender succeeded SMTP AUTH, not delayed by milter-greylist-4.2.7 (bigwig.baldwin.cx); Thu, 02 Jan 2014 15:22:00 -0500 (EST) Cc: "freebsd-virtualization@freebsd.org" X-BeenThere: freebsd-virtualization@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "Discussion of various virtualization techniques FreeBSD supports." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 02 Jan 2014 20:22:01 -0000 On Saturday, December 28, 2013 10:14:01 pm Neel Natu wrote: > Hi John, > > On Fri, Dec 27, 2013 at 9:05 AM, John Baldwin wrote: > > While hacking on the power button support, I also started rototilling the DSDT > > generation code a bit. My initial goal was to enumerate the LPC serial ports > > (COM1 and COM2) properly via ACPI. I ended up doing the following: > > > > - Moved the info for the top-level PCI bus into the PCI emulation code and > > added ResourceProducer entries for the memory ranges decoded by the bus > > for memory BARs. > > - I added a framework to allow each PCI emulation driver to optionally write > > an entry into the DSDT under the \_SB_.PCI0 namespace. The LPC driver uses > > this to write a node for the LPC bus (\_SB_.PCI0.ISA). > > - I added a linker set to allow any LPC devices to write entries into the > > DSDT below the LPC node. I moved the existing block for the RTC out of > > acpi.c and into the RTC driver. I added DSDT nodes for the AT PIC, > > the 8254 ISA timer, and the LPC UART devices. > > - I also added a "SuperIO" device under the LPC node to claim "system > > resources" (as is done in real hardware). I added a linker set to allow > > various drivers to add IO or memory ranges that should be claimed by > > SuperIO and then added the extended RTC IO range and the registers used > > for ACPI power management as system resources. > > > > The end result is that for the stock VM created by vmrun.sh, the attimer0, > > uart0, and uart1 devices move from isa0 to acpi0. There is also a PIC > > device that would be claimed by 'device atpic' (but the stock amd64 kernel > > doesn't include that). The DSDT is also a bit more fleshed out, and also > > looks "nice" as devices are mostly laid out in the normal tree rather than > > using separate Scope() sections for each device. > > > > Note that I did add some helper routines for writing out DSDT lines and > > resource entries to try to simplify the code in the various DSDT handlers > > and make the code that generates DSDT lines a bit more readable (e.g. the > > implicit newlines make things more readable IMO). > > > > The patch is relative to the previous power button patch and is at > > http://www.FreeBSD.org/~jhb/patches/bhyve_dsdt.patch > > > > This looks great! > > This is not related to your patch (it has always been there), but I > was trying to understand the significance of this entry: > pci_lpc_write_dsdt(): OperationRegion (P40C, PCI_Config, 0x60, 0x04) > > Any idea on why this is needed/interesting? Oh, I assumed it was just copied and pasted from whatever template was used for the initial DSDT. I was thinking of removing it because it is unused. If you are happy with me doing so I'll gladly axe it. > best > Neel > > > Assuming these are ok, the next thing I might work on is cleaning up > > the PCI INTx interrupts. They should really all be rounted to the I/O APIC > > intpins above 15 (and we should leave ISA IRQs 5, 10, and 11 alone in APIC > > mode and only fall back to that if we are using the 8259As and a real ELCR). > > The MP Table output would need some minor tweaking for that, and for ACPI we > > should generate a _PRT table under _SB_.PCI0 in pci_emul.c. > > > > -- > > John Baldwin > > _______________________________________________ > > freebsd-virtualization@freebsd.org mailing list > > http://lists.freebsd.org/mailman/listinfo/freebsd-virtualization > > To unsubscribe, send any mail to "freebsd-virtualization-unsubscribe@freebsd.org" > -- John Baldwin