Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 20 Dec 2000 23:48:10 -0600
From:      seebs@plethora.net (Peter Seebach)
To:        freebsd-hackers@freebsd.org
Subject:   Supporting VirtualPC... 
Message-ID:  <200012210548.XAA23830@guild.plethora.net>

next in thread | raw e-mail | index | archive | help
Quick summary:  VirtualPC has a PCI configuration quirk.  Specifically,
in isa/pcibus.c, after
	mode1res = inl(CONF1_ADDR_PORT);
we have
	if (mode1res) {                  
		if (pci_cfgcheck(32))    
			return (cfgmech);
	}                                

If I change this to "if (1)", VirtualPC works.  Otherwise, the PCI bus
is never found.

There's also a quirk in the DEC 21041 emulation.

I am wondering what would be considered a "good" way to encode the knowledge
that machines with "ConnectixCPU" in the mode string need specific special
treatment in two widely disparate places.  In NetBSD, I just added a variable
"cpu_is_vpc", which is declared only if you have options VPC_CPU, and then
I test for it only in the modules that need to know.  (There are more of
them, since I also did support for VPC 3.)  I am too lazy to duplicate all
of the VPC 3 workarounds, so I really only need to check this in two places.

Is there an easy way to check the CPU mode string later on in the life
of the kernel?  Ideally, it would be cheap, and I'd also want to #ifdef
it with an option specific to VirtualPC, so people don't have to waste
cycles on the test.

(The if_de quirk, BTW, is that they always send the abnormal interrupt
for "transmit process stopped" after a transmit completes normally.  Oops!)

-s


To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-hackers" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200012210548.XAA23830>