Date: Fri, 30 Sep 2005 08:43:00 -0400 From: "Paul V. Bolotoff" <walter@alasir.com> To: freebsd-alpha@freebsd.org Subject: [patch] cia BWX oddity in RELENG4 Message-ID: <E1ELKE8-0004RA-1b@webmail05.int.bizland.net>
index | next in thread | raw e-mail
[-- Attachment #1 --]
Good time of day,
There is a strange issue in alpha/pci/cia.c, which prevents the kernel from utilising the BWX features of the Alcor 2 chipset (21172). In fact, the code makes no difference between Alcor 2 and Alcor (21171), which has no BWX support at all. The patch attached fixes this behaviour.
Before and after the patch. As you can see, BWX has been enabled successfully. The system (AlphaServer 800) is up and running as usual.
# sysctl -a | grep hw.chipset
hw.chipset.type: cia
hw.chipset.bwx: 0
hw.chipset.ports: 573378134016
hw.chipset.memory: 549755813888
hw.chipset.dense: 575525617664
hw.chipset.hae_mask: 3758096384
hw.chipset.type: alcor2
hw.chipset.bwx: 1
hw.chipset.ports: 588410519552
hw.chipset.memory: 584115552256
hw.chipset.dense: 575525617664
hw.chipset.hae_mask: 0
By the way, I see this issue has been fixed in RELENG5 some time ago, though in somewhat different way. Why not in RELENG4?
PVB
[-- Attachment #2 --]
--- /usr/src/sys/alpha/pci/cia.c Fri Dec 3 08:40:53 1999
+++ /usr/src/sys/alpha/pci/cia.c.new Thu Sep 29 23:28:46 2005
@@ -870,15 +870,19 @@
if (alpha_implver() != ALPHA_IMPLVER_EV5
|| alpha_amask(ALPHA_AMASK_BWX)
- || !(cia_config & CNFG_BWEN))
+ || !(cia_config & CNFG_BWEN)) {
chipset = cia_swiz_chipset;
- else
+ chipset_bwx = 0;
+ } else {
chipset = cia_bwx_chipset;
+ chipset_bwx = 1;
+ }
cia_hae_mem = REGVAL(CIA_CSR_HAE_MEM);
#if 0
chipset = cia_swiz_chipset; /* XXX */
cia_ispyxis = 0;
+ chipset_bwx = 0;
#endif
if (platform.pci_intr_init)
@@ -910,12 +914,11 @@
cia_init();
- name = cia_ispyxis ? "Pyxis" : "ALCOR/ALCOR2";
if (cia_ispyxis) {
name = "Pyxis";
pass = cia_rev;
} else {
- name = "ALCOR/ALCOR2";
+ name = chipset_bwx ? "Alcor 2" : "Alcor";
pass = cia_rev+1;
}
printf("cia0: %s, pass %d\n", name, pass);
@@ -960,20 +963,19 @@
if (!platform.iointr) /* XXX */
set_iointr(alpha_dispatch_intr);
- if (cia_ispyxis) {
- snprintf(chipset_type, sizeof(chipset_type), "pyxis");
- chipset_bwx = 1;
+ if (chipset_bwx) {
+ if (cia_ispyxis)
+ snprintf(chipset_type, sizeof(chipset_type), "pyxis");
+ else snprintf(chipset_type, sizeof(chipset_type), "alcor2");
chipset_ports = CIA_EV56_BWIO;
chipset_memory = CIA_EV56_BWMEM;
- chipset_dense = CIA_PCI_DENSE;
} else {
- snprintf(chipset_type, sizeof(chipset_type), "cia");
- chipset_bwx = 0;
+ snprintf(chipset_type, sizeof(chipset_type), "alcor");
chipset_ports = CIA_PCI_SIO1;
chipset_memory = CIA_PCI_SMEM1;
- chipset_dense = CIA_PCI_DENSE;
chipset_hae_mask = 7L << 29;
}
+ chipset_dense = CIA_PCI_DENSE;
bus_generic_attach(dev);
return 0;
home |
help
Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?E1ELKE8-0004RA-1b>
