git: 9front

Download patch

ref: db7813d700c8d175dbe399e18eeaeae01eca63e2
parent: dc20a94f244ab7bbaec47e5106362957a53a570b
author: cinap_lenrek <cinap_lenrek@felloff.net>
date: Tue May 26 20:23:13 EDT 2015

pci: map pci bars for devices with base class codes (ccrb) 0x00 and 0x0D-0x11 (thanks qeed)

there are a few more device base class codes defined 0x0D-0x11, and
qemu appears to use base class code 0x00 for some of its fake
devices.

--- a/sys/src/9/pc/pci.c
+++ b/sys/src/9/pc/pci.c
@@ -406,6 +406,7 @@
 			 * and work out the sizes.
 			 */
 			switch(p->ccrb) {
+			case 0x00:		/* prehistoric */
 			case 0x01:		/* mass storage controller */
 			case 0x02:		/* network controller */
 			case 0x03:		/* display controller */
@@ -416,6 +417,11 @@
 			case 0x0A:		/* docking stations */
 			case 0x0B:		/* processors */
 			case 0x0C:		/* serial bus controllers */
+			case 0x0D:		/* wireless controllers */
+			case 0x0E:		/* intelligent I/O controllers */
+			case 0x0F:		/* sattelite communication controllers */
+			case 0x10:		/* encryption/decryption controllers */
+			case 0x11:		/* signal processing controllers */
 				if((hdt & 0x7F) != 0)
 					break;
 				rno = PciBAR0;
@@ -439,7 +445,6 @@
 				}
 				break;
 
-			case 0x00:
 			case 0x05:		/* memory controller */
 			case 0x06:		/* bridge device */
 			default:
--