Commit f88e4b91bea91beaa4f9dde28ccb4aa973c1dd4e

Authored by blueswir1
1 parent 66de733b

Allow boot without a drive on Sparc machines (partly extracted from Xen)

git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@4997 c046a42c-6fe2-441c-8c8c-71466251a162
hw/boards.h
@@ -16,6 +16,7 @@ typedef struct QEMUMachine { @@ -16,6 +16,7 @@ typedef struct QEMUMachine {
16 QEMUMachineInitFunc *init; 16 QEMUMachineInitFunc *init;
17 #define RAMSIZE_FIXED (1 << 0) 17 #define RAMSIZE_FIXED (1 << 0)
18 ram_addr_t ram_require; 18 ram_addr_t ram_require;
  19 + int nodisk_ok;
19 struct QEMUMachine *next; 20 struct QEMUMachine *next;
20 } QEMUMachine; 21 } QEMUMachine;
21 22
hw/sun4m.c
@@ -1242,6 +1242,7 @@ QEMUMachine ss5_machine = { @@ -1242,6 +1242,7 @@ QEMUMachine ss5_machine = {
1242 .desc = "Sun4m platform, SPARCstation 5", 1242 .desc = "Sun4m platform, SPARCstation 5",
1243 .init = ss5_init, 1243 .init = ss5_init,
1244 .ram_require = PROM_SIZE_MAX + TCX_SIZE, 1244 .ram_require = PROM_SIZE_MAX + TCX_SIZE,
  1245 + .nodisk_ok = 1,
1245 }; 1246 };
1246 1247
1247 QEMUMachine ss10_machine = { 1248 QEMUMachine ss10_machine = {
@@ -1249,6 +1250,7 @@ QEMUMachine ss10_machine = { @@ -1249,6 +1250,7 @@ QEMUMachine ss10_machine = {
1249 .desc = "Sun4m platform, SPARCstation 10", 1250 .desc = "Sun4m platform, SPARCstation 10",
1250 .init = ss10_init, 1251 .init = ss10_init,
1251 .ram_require = PROM_SIZE_MAX + TCX_SIZE, 1252 .ram_require = PROM_SIZE_MAX + TCX_SIZE,
  1253 + .nodisk_ok = 1,
1252 }; 1254 };
1253 1255
1254 QEMUMachine ss600mp_machine = { 1256 QEMUMachine ss600mp_machine = {
@@ -1256,6 +1258,7 @@ QEMUMachine ss600mp_machine = { @@ -1256,6 +1258,7 @@ QEMUMachine ss600mp_machine = {
1256 .desc = "Sun4m platform, SPARCserver 600MP", 1258 .desc = "Sun4m platform, SPARCserver 600MP",
1257 .init = ss600mp_init, 1259 .init = ss600mp_init,
1258 .ram_require = PROM_SIZE_MAX + TCX_SIZE, 1260 .ram_require = PROM_SIZE_MAX + TCX_SIZE,
  1261 + .nodisk_ok = 1,
1259 }; 1262 };
1260 1263
1261 QEMUMachine ss20_machine = { 1264 QEMUMachine ss20_machine = {
@@ -1263,6 +1266,7 @@ QEMUMachine ss20_machine = { @@ -1263,6 +1266,7 @@ QEMUMachine ss20_machine = {
1263 .desc = "Sun4m platform, SPARCstation 20", 1266 .desc = "Sun4m platform, SPARCstation 20",
1264 .init = ss20_init, 1267 .init = ss20_init,
1265 .ram_require = PROM_SIZE_MAX + TCX_SIZE, 1268 .ram_require = PROM_SIZE_MAX + TCX_SIZE,
  1269 + .nodisk_ok = 1,
1266 }; 1270 };
1267 1271
1268 QEMUMachine ss2_machine = { 1272 QEMUMachine ss2_machine = {
@@ -1270,6 +1274,7 @@ QEMUMachine ss2_machine = { @@ -1270,6 +1274,7 @@ QEMUMachine ss2_machine = {
1270 .desc = "Sun4c platform, SPARCstation 2", 1274 .desc = "Sun4c platform, SPARCstation 2",
1271 .init = ss2_init, 1275 .init = ss2_init,
1272 .ram_require = PROM_SIZE_MAX + TCX_SIZE, 1276 .ram_require = PROM_SIZE_MAX + TCX_SIZE,
  1277 + .nodisk_ok = 1,
1273 }; 1278 };
1274 1279
1275 QEMUMachine voyager_machine = { 1280 QEMUMachine voyager_machine = {
@@ -1277,6 +1282,7 @@ QEMUMachine voyager_machine = { @@ -1277,6 +1282,7 @@ QEMUMachine voyager_machine = {
1277 .desc = "Sun4m platform, SPARCstation Voyager", 1282 .desc = "Sun4m platform, SPARCstation Voyager",
1278 .init = vger_init, 1283 .init = vger_init,
1279 .ram_require = PROM_SIZE_MAX + TCX_SIZE, 1284 .ram_require = PROM_SIZE_MAX + TCX_SIZE,
  1285 + .nodisk_ok = 1,
1280 }; 1286 };
1281 1287
1282 QEMUMachine ss_lx_machine = { 1288 QEMUMachine ss_lx_machine = {
@@ -1284,6 +1290,7 @@ QEMUMachine ss_lx_machine = { @@ -1284,6 +1290,7 @@ QEMUMachine ss_lx_machine = {
1284 .desc = "Sun4m platform, SPARCstation LX", 1290 .desc = "Sun4m platform, SPARCstation LX",
1285 .init = ss_lx_init, 1291 .init = ss_lx_init,
1286 .ram_require = PROM_SIZE_MAX + TCX_SIZE, 1292 .ram_require = PROM_SIZE_MAX + TCX_SIZE,
  1293 + .nodisk_ok = 1,
1287 }; 1294 };
1288 1295
1289 QEMUMachine ss4_machine = { 1296 QEMUMachine ss4_machine = {
@@ -1291,6 +1298,7 @@ QEMUMachine ss4_machine = { @@ -1291,6 +1298,7 @@ QEMUMachine ss4_machine = {
1291 .desc = "Sun4m platform, SPARCstation 4", 1298 .desc = "Sun4m platform, SPARCstation 4",
1292 .init = ss4_init, 1299 .init = ss4_init,
1293 .ram_require = PROM_SIZE_MAX + TCX_SIZE, 1300 .ram_require = PROM_SIZE_MAX + TCX_SIZE,
  1301 + .nodisk_ok = 1,
1294 }; 1302 };
1295 1303
1296 QEMUMachine scls_machine = { 1304 QEMUMachine scls_machine = {
@@ -1298,6 +1306,7 @@ QEMUMachine scls_machine = { @@ -1298,6 +1306,7 @@ QEMUMachine scls_machine = {
1298 .desc = "Sun4m platform, SPARCClassic", 1306 .desc = "Sun4m platform, SPARCClassic",
1299 .init = scls_init, 1307 .init = scls_init,
1300 .ram_require = PROM_SIZE_MAX + TCX_SIZE, 1308 .ram_require = PROM_SIZE_MAX + TCX_SIZE,
  1309 + .nodisk_ok = 1,
1301 }; 1310 };
1302 1311
1303 QEMUMachine sbook_machine = { 1312 QEMUMachine sbook_machine = {
@@ -1305,6 +1314,7 @@ QEMUMachine sbook_machine = { @@ -1305,6 +1314,7 @@ QEMUMachine sbook_machine = {
1305 .desc = "Sun4m platform, SPARCbook", 1314 .desc = "Sun4m platform, SPARCbook",
1306 .init = sbook_init, 1315 .init = sbook_init,
1307 .ram_require = PROM_SIZE_MAX + TCX_SIZE, 1316 .ram_require = PROM_SIZE_MAX + TCX_SIZE,
  1317 + .nodisk_ok = 1,
1308 }; 1318 };
1309 1319
1310 static const struct sun4d_hwdef sun4d_hwdefs[] = { 1320 static const struct sun4d_hwdef sun4d_hwdefs[] = {
@@ -1542,6 +1552,7 @@ QEMUMachine ss1000_machine = { @@ -1542,6 +1552,7 @@ QEMUMachine ss1000_machine = {
1542 .desc = "Sun4d platform, SPARCserver 1000", 1552 .desc = "Sun4d platform, SPARCserver 1000",
1543 .init = ss1000_init, 1553 .init = ss1000_init,
1544 .ram_require = PROM_SIZE_MAX + TCX_SIZE, 1554 .ram_require = PROM_SIZE_MAX + TCX_SIZE,
  1555 + .nodisk_ok = 1,
1545 }; 1556 };
1546 1557
1547 QEMUMachine ss2000_machine = { 1558 QEMUMachine ss2000_machine = {
@@ -1549,4 +1560,5 @@ QEMUMachine ss2000_machine = { @@ -1549,4 +1560,5 @@ QEMUMachine ss2000_machine = {
1549 .desc = "Sun4d platform, SPARCcenter 2000", 1560 .desc = "Sun4d platform, SPARCcenter 2000",
1550 .init = ss2000_init, 1561 .init = ss2000_init,
1551 .ram_require = PROM_SIZE_MAX + TCX_SIZE, 1562 .ram_require = PROM_SIZE_MAX + TCX_SIZE,
  1563 + .nodisk_ok = 1,
1552 }; 1564 };
hw/sun4u.c
@@ -450,6 +450,7 @@ QEMUMachine sun4u_machine = { @@ -450,6 +450,7 @@ QEMUMachine sun4u_machine = {
450 .desc = "Sun4u platform", 450 .desc = "Sun4u platform",
451 .init = sun4u_init, 451 .init = sun4u_init,
452 .ram_require = PROM_SIZE_MAX + VGA_RAM_SIZE, 452 .ram_require = PROM_SIZE_MAX + VGA_RAM_SIZE,
  453 + .nodisk_ok = 1,
453 }; 454 };
454 455
455 QEMUMachine sun4v_machine = { 456 QEMUMachine sun4v_machine = {
@@ -457,4 +458,5 @@ QEMUMachine sun4v_machine = { @@ -457,4 +458,5 @@ QEMUMachine sun4v_machine = {
457 .desc = "Sun4v platform", 458 .desc = "Sun4v platform",
458 .init = sun4v_init, 459 .init = sun4v_init,
459 .ram_require = PROM_SIZE_MAX + VGA_RAM_SIZE, 460 .ram_require = PROM_SIZE_MAX + VGA_RAM_SIZE,
  461 + .nodisk_ok = 1,
460 }; 462 };
@@ -8879,9 +8879,8 @@ int main(int argc, char **argv) @@ -8879,9 +8879,8 @@ int main(int argc, char **argv)
8879 linux_boot = (kernel_filename != NULL); 8879 linux_boot = (kernel_filename != NULL);
8880 net_boot = (boot_devices_bitmap >> ('n' - 'a')) & 0xF; 8880 net_boot = (boot_devices_bitmap >> ('n' - 'a')) & 0xF;
8881 8881
8882 - /* XXX: this should not be: some embedded targets just have flash */  
8883 if (!linux_boot && net_boot == 0 && 8882 if (!linux_boot && net_boot == 0 &&
8884 - nb_drives_opt == 0) 8883 + !machine->nodisk_ok && nb_drives_opt == 0)
8885 help(1); 8884 help(1);
8886 8885
8887 if (!linux_boot && *kernel_cmdline != '\0') { 8886 if (!linux_boot && *kernel_cmdline != '\0') {