Commit 96d30e4801dd31b0fbbee4ac8977937ce0ec116f

Authored by ths
1 parent 2f67a0d5

Revert -disk patch, as requested by Fabrice. The general idea of this

patch is sound, but the implementation is just too ugly.


git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@2309 c046a42c-6fe2-441c-8c8c-71466251a162
... ... @@ -705,21 +705,23 @@ static void pc_init1(int ram_size, int vga_ram_size, int boot_device,
705 705 if (i440fx_state) {
706 706 i440fx_init_memory_mappings(i440fx_state);
707 707 }
  708 +#if 0
  709 + /* ??? Need to figure out some way for the user to
  710 + specify SCSI devices. */
708 711 if (pci_enabled) {
709 712 void *scsi;
710   -
711   - if (scsi_hba_lsi > 0) {
712   - if (!(scsi = lsi_scsi_init(pci_bus, -1))) {
713   - exit(1);
714   - }
715   - for(i = 0; i < MAX_SCSI_DISKS; i++) {
716   - if (scsi_disks_info[i].adapter == SCSI_LSI_53C895A &&
717   - scsi_disks_info[i].device_type != SCSI_NONE) {
718   - lsi_scsi_attach(scsi, bs_scsi_table[i], scsi_disks_info[i].id);
719   - }
720   - }
721   - }
  713 + BlockDriverState *bdrv;
  714 +
  715 + scsi = lsi_scsi_init(pci_bus, -1);
  716 + bdrv = bdrv_new("scsidisk");
  717 + bdrv_open(bdrv, "scsi_disk.img", 0);
  718 + lsi_scsi_attach(scsi, bdrv, -1);
  719 + bdrv = bdrv_new("scsicd");
  720 + bdrv_open(bdrv, "scsi_cd.iso", 0);
  721 + bdrv_set_type_hint(bdrv, BDRV_TYPE_CDROM);
  722 + lsi_scsi_attach(scsi, bdrv, -1);
722 723 }
  724 +#endif
723 725 }
724 726  
725 727 static void pc_init_pci(int ram_size, int vga_ram_size, int boot_device,
... ...
hw/sun4m.c
... ... @@ -262,12 +262,6 @@ static void sun4m_init(int ram_size, int vga_ram_size, int boot_device,
262 262 slavio_serial_init(PHYS_JJ_SER, PHYS_JJ_SER_IRQ, serial_hds[1], serial_hds[0]);
263 263 fdctrl_init(PHYS_JJ_FLOPPY_IRQ, 0, 1, PHYS_JJ_FDC, fd_table);
264 264 main_esp = esp_init(bs_table, PHYS_JJ_ESP, dma);
265   - for (i = 0; i < MAX_SCSI_DISKS; i++) {
266   - if (scsi_disks_info[i].adapter == SCSI_ESP &&
267   - scsi_disks_info[i].device_type != SCSI_NONE) {
268   - esp_scsi_attach(main_esp, bs_scsi_table[i], scsi_disks_info[i].id);
269   - }
270   - }
271 265 slavio_misc = slavio_misc_init(PHYS_JJ_SLAVIO, PHYS_JJ_ME_IRQ);
272 266 cs_init(PHYS_JJ_CS, PHYS_JJ_CS_IRQ, slavio_intctl);
273 267 sparc32_dma_set_reset_data(dma, main_esp, main_lance);
... ...
qemu-doc.texi
... ... @@ -223,12 +223,6 @@ using @file{/dev/cdrom} as filename (@pxref{host_drives}).
223 223 Boot on floppy (a), hard disk (c), CD-ROM (d), or Etherboot (n). Hard disk boot
224 224 is the default.
225 225  
226   -@item -disk ide,img=file[,hdx=a..dd][,type=disk|cdrom]
227   -Use @var{file} as the IDE disk/CD-ROM image. The defaults are: hdx=a,type=disk
228   -
229   -@item -disk scsi,img=file[,sdx=a..g][,type=disk|cdrom][,id=n]
230   -Use @var{file} as the SCSI disk/CD-ROM image. The defaults are: sdx=a,type=disk,id='auto assign'
231   -
232 226 @item -snapshot
233 227 Write to temporary files instead of disk image files. In this case,
234 228 the raw disk image you use is not written back. You can however force
... ...
... ... @@ -114,8 +114,6 @@
114 114 /* XXX: use a two level table to limit memory usage */
115 115 #define MAX_IOPORTS 65536
116 116  
117   -#define DISK_OPTIONS_SIZE 256
118   -
119 117 const char *bios_dir = CONFIG_QEMU_SHAREDIR;
120 118 char phys_ram_file[1024];
121 119 void *ioport_opaque[MAX_IOPORTS];
... ... @@ -126,9 +124,6 @@ IOPortWriteFunc *ioport_write_table[3][MAX_IOPORTS];
126 124 BlockDriverState *bs_table[MAX_DISKS + 1], *fd_table[MAX_FD];
127 125 /* point to the block driver where the snapshots are managed */
128 126 BlockDriverState *bs_snapshots;
129   -BlockDriverState *bs_scsi_table[MAX_SCSI_DISKS];
130   -SCSIDiskInfo scsi_disks_info[MAX_SCSI_DISKS];
131   -int scsi_hba_lsi; /* Count of scsi disks/cdrom using this lsi adapter */
132 127 int vga_ram_size;
133 128 int bios_size;
134 129 static DisplayState display_state;
... ... @@ -3983,178 +3978,6 @@ void do_info_network(void)
3983 3978 }
3984 3979 }
3985 3980  
3986   -/* Parse IDE and SCSI disk options */
3987   -static int disk_options_init(int num_ide_disks,
3988   - char ide_disk_options[][DISK_OPTIONS_SIZE],
3989   - int snapshot,
3990   - int num_scsi_disks,
3991   - char scsi_disk_options[][DISK_OPTIONS_SIZE],
3992   - int cdrom_index,
3993   - int cyls,
3994   - int heads,
3995   - int secs,
3996   - int translation)
3997   -{
3998   - char buf[256];
3999   - char dev_name[64];
4000   - int id, i, j;
4001   - int cdrom_device;
4002   - int ide_cdrom_created = 0;
4003   - int scsi_index;
4004   - scsi_host_adapters temp_adapter;
4005   -
4006   - /* Process any IDE disks/cdroms */
4007   - for (i=0; i< num_ide_disks; i++) {
4008   - for (j=0; j<MAX_DISKS; j++) {
4009   - if (ide_disk_options[j][0] == '\0')
4010   - continue;
4011   -
4012   - if (get_param_value(buf, sizeof(buf),"type",ide_disk_options[j])) {
4013   - if (!strcmp(buf, "disk")) {
4014   - cdrom_device = 0;
4015   - } else if (!strcmp(buf, "cdrom")) {
4016   - cdrom_device = 1;
4017   - ide_cdrom_created = 1;
4018   - } else {
4019   - fprintf(stderr, "qemu: invalid IDE disk type= value: %s\n", buf);
4020   - return -1;
4021   - }
4022   - } else {
4023   - cdrom_device = 0;
4024   - }
4025   -
4026   - if (cdrom_device) {
4027   - snprintf(dev_name, sizeof(dev_name), "cdrom%c", i + '0');
4028   - } else {
4029   - snprintf(dev_name, sizeof(dev_name), "hd%c", i + 'a');
4030   - }
4031   -
4032   - if (!(get_param_value(buf, sizeof(buf),"img",ide_disk_options[j]))) {
4033   - fprintf(stderr, "qemu: missing IDE disk img= value.\n");
4034   - return -1;
4035   - }
4036   -
4037   - if (!(bs_table[i] = bdrv_new(dev_name))) {
4038   - fprintf(stderr, "qemu: unable to create new block device for:%s\n",dev_name);
4039   - return -1;
4040   - }
4041   -
4042   - if (cdrom_device) {
4043   - bdrv_set_type_hint(bs_table[i], BDRV_TYPE_CDROM);
4044   - }
4045   -
4046   - if (bdrv_open(bs_table[i], buf, snapshot ? BDRV_O_SNAPSHOT : 0) < 0) {
4047   - fprintf(stderr, "qemu: could not open hard disk image: '%s'\n",
4048   - buf);
4049   - return -1;
4050   - }
4051   - if (i == 0 && cyls != 0) {
4052   - bdrv_set_geometry_hint(bs_table[i], cyls, heads, secs);
4053   - bdrv_set_translation_hint(bs_table[i], translation);
4054   - }
4055   - ide_disk_options[j][0] = '\0';
4056   -
4057   - if (i == cdrom_index) {
4058   - cdrom_index = -1;
4059   - }
4060   - break; /* finished with this IDE device*/
4061   - }
4062   - }
4063   -
4064   - if (cdrom_index >= 0 && (!ide_cdrom_created)) {
4065   - bs_table[cdrom_index] = bdrv_new("cdrom");
4066   - bdrv_set_type_hint(bs_table[cdrom_index], BDRV_TYPE_CDROM);
4067   - }
4068   -
4069   - for(i = 0; i < num_scsi_disks; i++) {
4070   -
4071   -#if !defined(TARGET_SPARC) || defined(TARGET_SPARC64)
4072   - temp_adapter = SCSI_LSI_53C895A;
4073   - scsi_hba_lsi++;
4074   -#else
4075   - temp_adapter = SCSI_ESP;
4076   -#endif
4077   -
4078   - /*Check for sdx= parameter */
4079   - if (get_param_value(buf, sizeof(buf), "sdx", scsi_disk_options[i])) {
4080   - if (buf[0] >= 'a' && buf[0] <= 'g') {
4081   - scsi_index = buf[0] - 'a';
4082   - } else{
4083   - fprintf(stderr, "qemu: sdx= option for SCSI must be one letter from a-g. %s \n",buf);
4084   - exit(1);
4085   - }
4086   - } else {
4087   - scsi_index = 0;
4088   - }
4089   -
4090   - /* Check for SCSI id specified. */
4091   - if (get_param_value(buf, sizeof(buf),"id",scsi_disk_options[i])) {
4092   - id = strtol(buf, NULL, 0);
4093   - if (id < 0 || id > 6) {
4094   - fprintf(stderr, "qemu: SCSI id must be from 0-6: %d\n", id);
4095   - return -1;
4096   - }
4097   - /* Check if id already used */
4098   - for(j = 0; j < MAX_SCSI_DISKS; j++) {
4099   - if (scsi_disks_info[j].device_type != SCSI_NONE &&
4100   - j != i &&
4101   - scsi_disks_info[j].adapter == temp_adapter &&
4102   - scsi_disks_info[j].id == id ) {
4103   - fprintf(stderr, "qemu: SCSI id already used: %u\n", id);
4104   - return -1;
4105   - }
4106   - }
4107   - } else {
4108   - id = -1;
4109   - }
4110   - scsi_disks_info[i].adapter = temp_adapter;
4111   - scsi_disks_info[i].id = id;
4112   -
4113   - if (get_param_value(buf, sizeof(buf),"type",scsi_disk_options[i])) {
4114   - if (!strcmp(buf, "disk")) {
4115   - cdrom_device = 0;
4116   - } else if (!strcmp(buf, "cdrom")) {
4117   - cdrom_device = 1;
4118   - } else {
4119   - fprintf(stderr, "qemu: invalid SCSI disk type= value: %s\n", buf);
4120   - return -1;
4121   - }
4122   - } else {
4123   - cdrom_device = 0;
4124   - }
4125   -
4126   - if (cdrom_device) {
4127   - snprintf(dev_name, sizeof(buf), "cdrom%c", scsi_index + '0');
4128   - scsi_disks_info[scsi_index].device_type = SCSI_CDROM;
4129   - } else {
4130   - snprintf(dev_name, sizeof(buf), "sd%c", scsi_index + 'a');
4131   - scsi_disks_info[scsi_index].device_type = SCSI_DISK;
4132   - }
4133   -
4134   - if (!(bs_scsi_table[scsi_index] = bdrv_new(dev_name))) {
4135   - fprintf(stderr, "qemu: unable to create new block device for:%s\n",dev_name);
4136   - return -1;
4137   - }
4138   -
4139   - /* Get image filename from options and then try to open it */
4140   - if (get_param_value(buf, sizeof(buf),"img",scsi_disk_options[i])) {
4141   - if (bdrv_open(bs_scsi_table[scsi_index], buf, 0) < 0) {
4142   - fprintf(stderr, "qemu: could not open SCSI disk image img='%s'\n",buf);
4143   - return -1;
4144   - }
4145   - } else {
4146   - fprintf(stderr, "qemu: SCSI disk image not specified for sd%c \n", i + 'a');
4147   - return -1;
4148   - }
4149   - if (cdrom_device) {
4150   - bdrv_set_type_hint(bs_scsi_table[scsi_index], BDRV_TYPE_CDROM);
4151   - }
4152   - }
4153   -
4154   - return 0;
4155   -}
4156   -
4157   -
4158 3981 /***********************************************************/
4159 3982 /* USB devices */
4160 3983  
... ... @@ -6263,10 +6086,6 @@ void help(void)
6263 6086 "-hdc/-hdd file use 'file' as IDE hard disk 2/3 image\n"
6264 6087 "-cdrom file use 'file' as IDE cdrom image (cdrom is ide1 master)\n"
6265 6088 "-boot [a|c|d|n] boot on floppy (a), hard disk (c), CD-ROM (d), or network (n)\n"
6266   - "-disk ide,img=file[,hdx=a..dd][,type=disk|cdrom] \n"
6267   - " defaults are: hdx=a,type=disk \n"
6268   - "-disk scsi,img=file[,sdx=a..g][,type=disk|cdrom][,id=n] \n"
6269   - " defaults are: sdx=a,type=disk,id='auto assign' \n"
6270 6089 "-snapshot write to temporary files instead of disk image files\n"
6271 6090 #ifdef CONFIG_SDL
6272 6091 "-no-quit disable SDL window close capability\n"
... ... @@ -6448,7 +6267,6 @@ enum {
6448 6267 QEMU_OPTION_no_acpi,
6449 6268 QEMU_OPTION_no_reboot,
6450 6269 QEMU_OPTION_daemonize,
6451   - QEMU_OPTION_disk,
6452 6270 QEMU_OPTION_option_rom,
6453 6271 };
6454 6272  
... ... @@ -6524,8 +6342,7 @@ const QEMUOption qemu_options[] = {
6524 6342 { "usbdevice", HAS_ARG, QEMU_OPTION_usbdevice },
6525 6343 { "smp", HAS_ARG, QEMU_OPTION_smp },
6526 6344 { "vnc", HAS_ARG, QEMU_OPTION_vnc },
6527   - { "disk", HAS_ARG, QEMU_OPTION_disk },
6528   -
  6345 +
6529 6346 /* temporary options */
6530 6347 { "usb", 0, QEMU_OPTION_usb },
6531 6348 { "cirrusvga", 0, QEMU_OPTION_cirrusvga },
... ... @@ -6744,11 +6561,7 @@ int main(int argc, char **argv)
6744 6561 int i, cdrom_index;
6745 6562 int snapshot, linux_boot;
6746 6563 const char *initrd_filename;
6747   - const char *fd_filename[MAX_FD];
6748   - char scsi_options[MAX_SCSI_DISKS] [DISK_OPTIONS_SIZE];
6749   - char ide_options[MAX_DISKS] [DISK_OPTIONS_SIZE];
6750   - int num_ide_disks;
6751   - int num_scsi_disks;
  6564 + const char *hd_filename[MAX_DISKS], *fd_filename[MAX_FD];
6752 6565 const char *kernel_filename, *kernel_cmdline;
6753 6566 DisplayState *ds = &display_state;
6754 6567 int cyls, heads, secs, translation;
... ... @@ -6803,19 +6616,10 @@ int main(int argc, char **argv)
6803 6616 register_machines();
6804 6617 machine = first_machine;
6805 6618 initrd_filename = NULL;
6806   - for(i = 0; i < MAX_SCSI_DISKS; i++) {
6807   - scsi_disks_info[i].device_type = SCSI_NONE;
6808   - bs_scsi_table[i] = NULL;
6809   - }
6810   -
6811   - num_ide_disks = 0;
6812   - num_scsi_disks = 0;
6813   -
6814 6619 for(i = 0; i < MAX_FD; i++)
6815 6620 fd_filename[i] = NULL;
6816   - for(i = 0; i < MAX_DISKS; i++) {
6817   - ide_options[i][0] = '\0';
6818   - }
  6621 + for(i = 0; i < MAX_DISKS; i++)
  6622 + hd_filename[i] = NULL;
6819 6623 ram_size = DEFAULT_RAM_SIZE * 1024 * 1024;
6820 6624 vga_ram_size = VGA_RAM_SIZE;
6821 6625 bios_size = BIOS_SIZE;
... ... @@ -6859,16 +6663,7 @@ int main(int argc, char **argv)
6859 6663 break;
6860 6664 r = argv[optind];
6861 6665 if (r[0] != '-') {
6862   -
6863   - /* Build new disk IDE syntax string */
6864   - pstrcpy(ide_options[0],
6865   - 14,
6866   - "hdx=a,img=");
6867   - /*Add on image filename */
6868   - pstrcpy(&(ide_options[0][13]),
6869   - sizeof(ide_options[0])-13,
6870   - argv[optind++]);
6871   - num_ide_disks++;
  6666 + hd_filename[0] = argv[optind++];
6872 6667 } else {
6873 6668 const QEMUOption *popt;
6874 6669  
... ... @@ -6918,75 +6713,10 @@ int main(int argc, char **argv)
6918 6713 case QEMU_OPTION_hdd:
6919 6714 {
6920 6715 int hd_index;
6921   - const char newIDE_DiskSyntax [][10] = {
6922   - "hdx=a,img=", "hdx=b,img=", "hdx=c,img=", "hdx=d,img=" };
6923   -
6924 6716 hd_index = popt->index - QEMU_OPTION_hda;
6925   - if (num_ide_disks >= MAX_DISKS) {
6926   - fprintf(stderr, "qemu: too many IDE disks defined.\n");
6927   - exit(1);
6928   - }
6929   - /* Build new disk IDE syntax string */
6930   - pstrcpy(ide_options[hd_index],
6931   - 11,
6932   - newIDE_DiskSyntax[hd_index]);
6933   - /* Add on image filename */
6934   - pstrcpy(&(ide_options[hd_index][10]),
6935   - sizeof(ide_options[0])-10,
6936   - optarg);
6937   - num_ide_disks++;
6938   - }
6939   - break;
6940   - case QEMU_OPTION_disk: /*Combined IDE and SCSI, for disk and CDROM */
6941   - {
6942   - const char *p_input_char;
6943   - char *p_output_string;
6944   - char device[64];
6945   - int disk_index;
6946   -
6947   - p_input_char = optarg;
6948   - p_output_string = device;
6949   - while (*p_input_char != '\0' && *p_input_char != ',') {
6950   - if ((p_output_string - device) < sizeof(device) - 1)
6951   - *p_output_string++ = *p_input_char;
6952   - p_input_char++;
6953   - }
6954   - *p_output_string = '\0';
6955   - if (*p_input_char == ',')
6956   - p_input_char++;
6957   -
6958   - if (!strcmp(device, "scsi")) {
6959   - if (num_scsi_disks >= MAX_SCSI_DISKS) {
6960   - fprintf(stderr, "qemu: too many SCSI disks defined.\n");
6961   - exit(1);
6962   - }
6963   - pstrcpy(scsi_options[num_scsi_disks],
6964   - sizeof(scsi_options[0]),
6965   - p_input_char);
6966   - num_scsi_disks++;
6967   - } else if (!strcmp(device,"ide")) {
6968   - if (num_ide_disks >= MAX_DISKS) {
6969   - fprintf(stderr, "qemu: too many IDE disks/cdroms defined.\n");
6970   - exit(1);
6971   - }
6972   - disk_index = 0; /* default is hda */
6973   - if (get_param_value(device, sizeof(device),"hdx",p_input_char)) {
6974   - if (device[0] >= 'a' && device[0] <= 'd') {
6975   - disk_index = device[0] - 'a';
6976   - } else {
6977   - fprintf(stderr, "qemu: invalid IDE disk hdx= value: %s\n", device);
6978   - return -1;
6979   - }
6980   - }
6981   - else disk_index=0;
6982   - pstrcpy(ide_options[disk_index],
6983   - sizeof(ide_options[0]),
6984   - p_input_char);
6985   - num_ide_disks++;
6986   - } else {
6987   - fprintf(stderr, "qemu: -disk option must specify IDE or SCSI: %s \n",device);
6988   - exit(1);
6989   - }
  6717 + hd_filename[hd_index] = optarg;
  6718 + if (hd_index == cdrom_index)
  6719 + cdrom_index = -1;
6990 6720 }
6991 6721 break;
6992 6722 case QEMU_OPTION_snapshot:
... ... @@ -7040,46 +6770,9 @@ int main(int argc, char **argv)
7040 6770 kernel_cmdline = optarg;
7041 6771 break;
7042 6772 case QEMU_OPTION_cdrom:
7043   -#if !defined(TARGET_SPARC) || defined(TARGET_SPARC64)
7044   - /* Assume boot cdrom is IDE */
7045   - {
7046   - char buf[22];
7047   - if (num_ide_disks >= MAX_DISKS) {
7048   - fprintf(stderr, "qemu: too many IDE disks/cdroms defined.\n");
7049   - exit(1);
7050   - }
7051   - snprintf(buf, sizeof(buf), "type=cdrom,hdx=%c,img=", cdrom_index + 'a');
7052   - /* Build new disk IDE syntax string */
7053   - pstrcpy(ide_options[cdrom_index],
7054   - 22,
7055   - buf);
7056   - /* Add on image filename */
7057   - pstrcpy(&(ide_options[cdrom_index][21]),
7058   - sizeof(ide_options[0])-21,
7059   - optarg);
7060   - num_ide_disks++;
7061   - }
7062   -#else
7063   - /* Assume boot cdrom is SCSI */
7064   - {
7065   - char buf[27];
7066   - if (num_scsi_disks >= MAX_SCSI_DISKS) {
7067   - fprintf(stderr, "qemu: too many SCSI disks/cdroms defined.\n");
7068   - exit(1);
7069   - }
7070   - snprintf(buf, sizeof(buf), "type=cdrom,sdx=%c,id=%d,img=",
7071   - num_scsi_disks + 'a', num_scsi_disks + 2);
7072   - /* Build new disk SCSI syntax string */
7073   - pstrcpy(scsi_options[num_scsi_disks],
7074   - 27,
7075   - buf);
7076   - /* Add on image filename */
7077   - pstrcpy(&(scsi_options[num_scsi_disks][26]),
7078   - sizeof(scsi_options[0])-26,
7079   - optarg);
7080   - num_scsi_disks++;
  6773 + if (cdrom_index >= 0) {
  6774 + hd_filename[cdrom_index] = optarg;
7081 6775 }
7082   -#endif
7083 6776 break;
7084 6777 case QEMU_OPTION_boot:
7085 6778 boot_device = optarg[0];
... ... @@ -7376,11 +7069,19 @@ int main(int argc, char **argv)
7376 7069 linux_boot = (kernel_filename != NULL);
7377 7070  
7378 7071 if (!linux_boot &&
7379   - num_ide_disks == 0 &&
7380   - num_scsi_disks == 0 &&
  7072 + hd_filename[0] == '\0' &&
  7073 + (cdrom_index >= 0 && hd_filename[cdrom_index] == '\0') &&
7381 7074 fd_filename[0] == '\0')
7382 7075 help();
7383 7076  
  7077 + /* boot to floppy or the default cd if no hard disk defined yet */
  7078 + if (hd_filename[0] == '\0' && boot_device == 'c') {
  7079 + if (fd_filename[0] != '\0')
  7080 + boot_device = 'a';
  7081 + else
  7082 + boot_device = 'd';
  7083 + }
  7084 +
7384 7085 setvbuf(stdout, NULL, _IOLBF, 0);
7385 7086  
7386 7087 init_timers();
... ... @@ -7446,22 +7147,31 @@ int main(int argc, char **argv)
7446 7147 exit(1);
7447 7148 }
7448 7149  
  7150 + /* we always create the cdrom drive, even if no disk is there */
7449 7151 bdrv_init();
7450   -
7451   - /* open the virtual block devices, disks or CDRoms */
7452   - if (disk_options_init(num_ide_disks,ide_options,snapshot,
7453   - num_scsi_disks,scsi_options,
7454   - cdrom_index,
7455   - cyls, heads, secs, translation)){
7456   - exit(1);
  7152 + if (cdrom_index >= 0) {
  7153 + bs_table[cdrom_index] = bdrv_new("cdrom");
  7154 + bdrv_set_type_hint(bs_table[cdrom_index], BDRV_TYPE_CDROM);
7457 7155 }
7458 7156  
7459   - /* boot to floppy or default cd if no hard disk */
7460   - if (num_ide_disks == 0 && boot_device == 'c') {
7461   - if (fd_filename[0] != '\0')
7462   - boot_device = 'a';
7463   - else
7464   - boot_device = 'd';
  7157 + /* open the virtual block devices */
  7158 + for(i = 0; i < MAX_DISKS; i++) {
  7159 + if (hd_filename[i]) {
  7160 + if (!bs_table[i]) {
  7161 + char buf[64];
  7162 + snprintf(buf, sizeof(buf), "hd%c", i + 'a');
  7163 + bs_table[i] = bdrv_new(buf);
  7164 + }
  7165 + if (bdrv_open(bs_table[i], hd_filename[i], snapshot ? BDRV_O_SNAPSHOT : 0) < 0) {
  7166 + fprintf(stderr, "qemu: could not open hard disk image '%s'\n",
  7167 + hd_filename[i]);
  7168 + exit(1);
  7169 + }
  7170 + if (i == 0 && cyls != 0) {
  7171 + bdrv_set_geometry_hint(bs_table[i], cyls, heads, secs);
  7172 + bdrv_set_translation_hint(bs_table[i], translation);
  7173 + }
  7174 + }
7465 7175 }
7466 7176  
7467 7177 /* we always create at least one floppy disk */
... ...
... ... @@ -1252,31 +1252,9 @@ int scsi_write_data(SCSIDevice *s, uint32_t tag);
1252 1252 void scsi_cancel_io(SCSIDevice *s, uint32_t tag);
1253 1253 uint8_t *scsi_get_buf(SCSIDevice *s, uint32_t tag);
1254 1254  
1255   -enum scsi_host_adapters {
1256   - SCSI_LSI_53C895A,
1257   - SCSI_ESP
1258   -};
1259   -enum scsi_devices {
1260   - SCSI_CDROM,
1261   - SCSI_DISK,
1262   - SCSI_NONE
1263   -};
1264   -typedef enum scsi_host_adapters scsi_host_adapters;
1265   -typedef enum scsi_devices scsi_devices;
1266   -typedef struct SCSIDiskInfo {
1267   - scsi_host_adapters adapter;
1268   - int id;
1269   - scsi_devices device_type;
1270   -} SCSIDiskInfo;
1271   -
1272   -#define MAX_SCSI_DISKS 7
1273   -extern BlockDriverState *bs_scsi_table[MAX_SCSI_DISKS];
1274   -extern SCSIDiskInfo scsi_disks_info[MAX_SCSI_DISKS];
1275   -
1276 1255 /* lsi53c895a.c */
1277 1256 void lsi_scsi_attach(void *opaque, BlockDriverState *bd, int id);
1278 1257 void *lsi_scsi_init(PCIBus *bus, int devfn);
1279   -extern int scsi_hba_lsi; // Count of scsi disks/cdrom using this lsi adapter
1280 1258  
1281 1259 /* integratorcp.c */
1282 1260 extern QEMUMachine integratorcp926_machine;
... ...