shithub: riscv

Download patch

ref: e5cb695c7ab91b35684937e6c311eb4fe9270d67
parent: 7efc2e761d4d7b2d20325b17e80b835b15f124b5
parent: f9839ed0a29a0598fa383f9c5e8d5c366f93596a
author: cinap_lenrek <cinap_lenrek@felloff.net>
date: Fri Oct 5 20:30:59 EDT 2018

merge

--- a/sys/src/9/pc/mem.h
+++ b/sys/src/9/pc/mem.h
@@ -57,8 +57,8 @@
  * Fundamental addresses - bottom 64kB saved for return to real mode
  */
 #define	CONFADDR	(KZERO+0x1200)		/* info passed from boot loader */
-#define	TMPADDR		(KZERO+0x2000)		/* used for temporary mappings */
-#define	APBOOTSTRAP	(KZERO+0x3000)		/* AP bootstrap code */
+#define	APBOOTSTRAP	(KZERO+0x7000)		/* AP bootstrap code (overlaps CONFADDR) */
+#define	TMPADDR		(KZERO+0x8000)		/* used for temporary mappings */
 #define	IDTADDR		(KZERO+0x10800)		/* idt */
 #define	REBOOTADDR	(0x11000)		/* reboot code - physical address */
 #define	CPU0PDB		(KZERO+0x12000)		/* bootstrap processor PDB */
@@ -79,14 +79,12 @@
 
 /*
  * Where configuration info is left for the loaded programme.
- * This will turn into a structure as more is done by the boot loader
- * (e.g. why parse the .ini file twice?).
- * There are 3584 bytes available at CONFADDR.
+ * There are 24064 bytes available at CONFADDR.
  */
 #define BOOTLINE	((char*)CONFADDR)
 #define BOOTLINELEN	64
 #define BOOTARGS	((char*)(CONFADDR+BOOTLINELEN))
-#define BOOTARGSLEN	(4096-0x200-BOOTLINELEN)
+#define BOOTARGSLEN	(0x6000-0x200-BOOTLINELEN)
 
 /*
  *  known x86 segments (in GDT) and their selectors
--- a/sys/src/9/pc/mkfile
+++ b/sys/src/9/pc/mkfile
@@ -8,7 +8,7 @@
 p=9
 
 # must match mem.h
-APBOOTSTRAP=0xF0003000
+APBOOTSTRAP=0xF0007000
 KTZERO=0xF0100020
 
 DEVS=`{rc ../port/mkdevlist $CONF}
--- a/sys/src/9/pc/usbehcipc.c
+++ b/sys/src/9/pc/usbehcipc.c
@@ -41,7 +41,7 @@
 	off = ehciecap(ctlr, Clegacy);
 	if(off == -1)
 		return;
-	if(pcicfgr8(ctlr->pcidev, off+CLbiossem) != 0){
+	if(getconf("*noehcihandoff") == nil && pcicfgr8(ctlr->pcidev, off+CLbiossem) != 0){
 		dprint("ehci %#p: bios active, taking over...\n", ctlr->capio);
 		pcicfgw8(ctlr->pcidev, off+CLossem, 1);
 		for(i = 0; i < 100; i++){
--- a/sys/src/9/pc/usbxhci.c
+++ b/sys/src/9/pc/usbxhci.c
@@ -393,11 +393,13 @@
 
 	if((r = xecp(ctlr, 1, nil)) == nil)
 		return;
-	r[0] |= 1<<24;		/* request ownership */
-	for(i = 0; (r[0] & (1<<16)) != 0 && i<100; i++)
-		tsleep(&up->sleep, return0, nil, 10);
+	if(getconf("*noxhcihandoff") == nil){
+		r[0] |= 1<<24;		/* request ownership */
+		for(i = 0; (r[0] & (1<<16)) != 0 && i<100; i++)
+			tsleep(&up->sleep, return0, nil, 10);
+		r[0] &= ~(1<<16);	/* in case of timeout */
+	}
 	r[1] = 0;		/* disable SMI interrupts */
-	r[0] &= ~(1<<16);	/* in case of timeout */
 }
 
 static void
--- a/sys/src/9/pc64/mem.h
+++ b/sys/src/9/pc64/mem.h
@@ -64,7 +64,7 @@
  * Fundamental addresses - bottom 64kB saved for return to real mode
  */
 #define	CONFADDR	(KZERO+0x1200ull)		/* info passed from boot loader */
-#define	APBOOTSTRAP	(KZERO+0x3000ull)		/* AP bootstrap code */
+#define	APBOOTSTRAP	(KZERO+0x7000ull)		/* AP bootstrap code */
 #define	IDTADDR		(KZERO+0x10000ull)		/* idt */
 #define	REBOOTADDR	(0x11000)			/* reboot code - physical address */
 
@@ -82,14 +82,12 @@
 
 /*
  * Where configuration info is left for the loaded programme.
- * This will turn into a structure as more is done by the boot loader
- * (e.g. why parse the .ini file twice?).
- * There are 3584 bytes available at CONFADDR.
+ * There are 24064 bytes available at CONFADDR.
  */
 #define BOOTLINE	((char*)CONFADDR)
 #define BOOTLINELEN	64
 #define BOOTARGS	((char*)(CONFADDR+BOOTLINELEN))
-#define BOOTARGSLEN	(4096-0x200-BOOTLINELEN)
+#define BOOTARGSLEN	(0x6000-0x200-BOOTLINELEN)
 
 /*
  *  known x86 segments (in GDT) and their selectors
--- a/sys/src/9/pc64/mkfile
+++ b/sys/src/9/pc64/mkfile
@@ -6,7 +6,7 @@
 p=9
 
 KTZERO=0xffffffff80110000
-APBOOTSTRAP=0xffffffff80003000
+APBOOTSTRAP=0xffffffff80007000
 REBOOTADDR=0x11000
 
 DEVS=`{rc ../port/mkdevlist $CONF}