aboutsummaryrefslogtreecommitdiff
path: root/src/boot.c
AgeCommit message (Collapse)AuthorFilesLines
2024-02-02boot: Clean up output of list of boot devicesHelge Deller1-1/+5
Show the header for available boot devices only if one is found. Signed-off-by: Helge Deller <deller@gmx.de>
2024-01-18boot: Use void* instead of u32 to store pointersHelge Deller1-11/+11
Needed to support 64-bit build. Signed-off-by: Helge Deller <deller@gmx.de>
2024-01-04parisc: Fix 64-bit firmware buildHelge Deller1-1/+1
Signed-off-by: Helge Deller <deller@gmx.de>
2023-10-14parisc/c3700: Add support for C3700 workstation with Astro/ElroyHelge Deller1-3/+3
Major changes to support 64-bit machines with Astro and Elroy chips. This patch adds support for the C3700 workstation. Changes include: - Detect if the emulated CPU runs as 32-bit PA1.x or 64-bit PA2.x CPU - Add support for Astro and Elroy chips: * build interrupt routing table (IRT) * add PCI irq to pci_device struct - Enhance PCI bus scanning * Add support for various PCI cards (serial, USB, graphics, ...) - Change PCI I/O accessor functions: * readX()/writeX() do byteswapping and take an ioremapped address * __raw_readX()/__raw_writeX() don't byteswap and take an ioremapped address. * gsc_*() don't byteswap and operate on physical addresses Signed-off-by: Helge Deller <deller@gmx.de>
2022-05-14parisc: Add full PDC firmware boot menuHelge Deller1-8/+16
Finally add the real boot menu. If qemu is started with the "-boot menu=on" option, the PDC boot menu is shown and the user can then boot any of the available SCSI disc/CDs. Just type "BOOT" (to boot the default device), or "BOOT FWSCSI.4" (to boot SCSI device #4). Signed-off-by: Helge Deller <deller@gmx.de>
2021-09-24boot: Fix qemu bootindex parameter on parisc architectureHelge Deller1-0/+4
On parisc qemu reports the main PCI bus as "/dino-pcihost" instead of "/pci@i0cf8". This is important when using the bootindex parameter for SCSI discs, because the seabios boot code uses this name as prefix when identifying and sorting the bootable discs. Signed-off-by: Helge Deller <deller@gmx.de>
2021-09-24boot: Allow boot order=g-m option to choose boot SCSI IDHelge Deller1-1/+10
Add support to boot from a specific SCSI ID by mapping drives g-m to SCSI IDs 0-7, e.g. -boot order=g for SCSI ID 0, and -boot order=l for SCSI ID 5 Signed-off-by: Helge Deller <deller@gmx.de>
2021-09-24boot.c: Add boot disc chooser for PA-RISCHelge Deller1-0/+48
Signed-off-by: Helge Deller <deller@gmx.de>
2020-10-15usb boot: add xhci mmio exampleGerd Hoffmann1-1/+3
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com> Message-id: 20201013091019.22029-1-kraxel@redhat.com
2020-10-13usb: add boot prio support for mmio host adaptersGerd Hoffmann1-1/+9
Add mmio field to usb controller struct, add support for mmio-mapped usb host adapters to boot order handling. Signed-off-by: Gerd Hoffmann <kraxel@redhat.com> Message-id: 20200930111433.21533-2-kraxel@redhat.com
2020-05-24boot: Fixup check for only one item in boot listKevin O'Connor1-8/+9
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2020-05-24boot: Fix logic for boot menu displayMatt DeVillier1-1/+1
Commit c61193d3 [boot: Extend `etc/show-boot-menu`...] changed the logic surrounding the use of show_boot_menu incorrectly, leading the boot menu to be skipped by default with no way to override. Correct the logic error so that show_boot_menu works as documented. Test: build/boot SeaBIOS, verify boot menu option shown by default. Signed-off-by: Matt DeVillier <matt.devillier@gmail.com>
2020-05-21boot: Log, if boot menu is skippedPaul Menzel1-0/+1
Signed-off-by: Paul Menzel <pmenzel@molgen.mpg.de>
2020-05-21boot: Extend `etc/show-boot-menu` to configure skipping boot menu with only ↵Paul Menzel1-2/+3
one device Concerns were raised, that skipping the boot menu, if only one device is present, might make debugging issues more difficult. So, extend the current runtime configuration option `etc/show-boot-menu` to enable this feature by setting it to 2. Fixes: 29ee1fb8 ("Skip boot menu and timeout with only one boot device") Signed-off-by: Paul Menzel <pmenzel@molgen.mpg.de>
2020-05-15virtio-mmio: add support for block devices.Gerd Hoffmann1-0/+9
Add and use bootprio_find_mmio_device() to figure the boot priority of virtio-mmio block devices. Add init_virtio_blk_mmio to initialize one virtio-mmio block device. Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
2020-05-15virtio-mmio: add support for scsi devices.Gerd Hoffmann1-0/+10
Add new fields to struct virtio_lun_s for mmio support, add mmio parameter to virtio_scsi_init_lun(), so both pci and mmio devices can be handled. Add and use bootprio_find_scsi_mmio_device() to figure boot priority of devices connected to a virtio-mmio scsi controller. Finally add init_virtio_scsi_mmio() to initialize one virtio-mmio scsi controller. Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
2020-03-17Skip boot menu and timeout with only one boot deviceMatt DeVillier1-0/+6
Signed-off-by: Matt DeVillier <matt.devillier@gmail.com> Signed-off-by: Paul Menzel <pmenzel@molgen.mpg.de> Message-Id: <45aa3ebe-b97c-f1af-2901-ec4e9bcd1084@molgen.mpg.de> Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
2020-01-14boot: cache HALT priorityGerd Hoffmann1-1/+5
Call find_prio("HALT") only once, on first is_bootprio_strict() call. Store the result in a variable and reuse it on subsequent calls. Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
2020-01-14boot: Detect strict boot order (HALT record) in functionAlexey Kirillov1-0/+5
Introduce is_bootprio_strict(). We will reuse this function in the next commit. Signed-off-by: Alexey Kirillov <lekiravi@yandex-team.ru> Message-id: 20200107171917.7535-2-lekiravi@yandex-team.ru Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
2019-11-18geometry: Add boot_lchs_find_*() utility functionsSam Eiderman1-0/+69
Adding the following utility functions: * boot_lchs_find_pci_device * boot_lchs_find_scsi_device * boot_lchs_find_ata_device These will be used to apply LCHS values received through fw_cfg. Reviewed-by: Karl Heubaum <karl.heubaum@oracle.com> Reviewed-by: Arbel Moshe <arbel.moshe@oracle.com> Signed-off-by: Sam Eiderman <shmuel.eiderman@oracle.com> Message-Id: <20190626123816.8907-5-shmuel.eiderman@oracle.com>
2019-11-18boot: Build ata and scsi paths in functionSam Eiderman1-8/+28
Introduce build_scsi_path() and build_ata_path(). We will reuse these functions in the next commit. Reviewed-by: Karl Heubaum <karl.heubaum@oracle.com> Reviewed-by: Arbel Moshe <arbel.moshe@oracle.com> Signed-off-by: Sam Eiderman <shmuel.eiderman@oracle.com> Message-Id: <20190626123816.8907-4-shmuel.eiderman@oracle.com>
2019-11-18geometry: Read LCHS from fw_cfgSam Eiderman1-0/+74
Read bios geometry for boot devices from fw_cfg. By receiving LCHS values directly from QEMU through fw_cfg we will be able to support logical geometries which can not be inferred by SeaBIOS itself. (For instance: A 8GB virtio-blk hard drive which was originally created as an IDE and must report LCHS of */32/63 for its operating system to function will always break under SeaBIOS since a LARGE/LBA translation will be used, causing the number of reported logical heads to be > 32.) The only LCHS paravirtual interface available at the moment is for IDE disks (rtc_read() in get_translation()) and it's limited to a maximum of 4 disks (this code existed in SeaBIOS's translation function before SCSI and VirtIO were even introduced). This is why we create a new interface which allows passing LCHS information per hdd. Boot device information is serialized in the following way: * device_path lcyls lheads lsecs\n ... * device_path lcyls lheads lsecs\0 Device path is a null terminated string in the "Open Firmware" device path format, the same path as used in bootorder. Reviewed-by: Karl Heubaum <karl.heubaum@oracle.com> Reviewed-by: Arbel Moshe <arbel.moshe@oracle.com> Signed-off-by: Sam Eiderman <shmuel.eiderman@oracle.com> Message-Id: <20190626123816.8907-2-shmuel.eiderman@oracle.com>
2019-11-18Revert "geometry: Read LCHS from fw_cfg"Gerd Hoffmann1-87/+0
This reverts commit 7c66a439c07536b525ff9d5ce230775975e9c072.
2019-11-18Revert "geometry: Add boot_lchs_find_*() utility functions"Gerd Hoffmann1-82/+0
This reverts commit ad2910949b1886deba24f574cee76cdc75e7cabe.
2019-11-18Revert "config: Add toggle for bootdevice information"Gerd Hoffmann1-9/+0
This reverts commit cb56f61c109985ad71078b1fb2e65bd4d6ed1a59.
2019-11-06config: Add toggle for bootdevice informationSam Eiderman1-0/+9
Add the "BOOTDEVICES" toggle to remove boot device information received through fw_cfg. We will use this toggle in QEMU to reduce the size of the 128k SeaBIOS rom, which is only used in old compat versions, where this boot device information does not exist. Reviewed-by: Karl Heubaum <karl.heubaum@oracle.com> Reviewed-by: Arbel Moshe <arbel.moshe@oracle.com> Signed-off-by: Sam Eiderman <shmuel.eiderman@oracle.com> Message-Id: <20190612093704.47175-5-shmuel.eiderman@oracle.com> Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
2019-11-06geometry: Add boot_lchs_find_*() utility functionsSam Eiderman1-0/+82
Adding the following utility functions: * boot_lchs_find_pci_device * boot_lchs_find_scsi_device * boot_lchs_find_ata_device These will be used to apply LCHS values received through fw_cfg. Reviewed-by: Karl Heubaum <karl.heubaum@oracle.com> Reviewed-by: Arbel Moshe <arbel.moshe@oracle.com> Signed-off-by: Sam Eiderman <shmuel.eiderman@oracle.com> Message-Id: <20190612093704.47175-4-shmuel.eiderman@oracle.com> Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
2019-11-06boot: Reorder functions in boot.cSam Eiderman1-45/+49
Currently glob_prefix() and build_pci_path() are under the "Boot priority ordering" section. Move them to a new "Helper search functions" section since we will reuse them in the next commit. Reviewed-by: Karl Heubaum <karl.heubaum@oracle.com> Reviewed-by: Arbel Moshe <arbel.moshe@oracle.com> Signed-off-by: Sam Eiderman <shmuel.eiderman@oracle.com> Message-Id: <20190612093704.47175-3-shmuel.eiderman@oracle.com> Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
2019-11-06geometry: Read LCHS from fw_cfgSam Eiderman1-0/+87
Read boot device information from fw_cfg. Boot device information will contain logical geometry (LCHS) values, but it is implemented in a manner which allows extension. By receiving LCHS values directly from QEMU through fw_cfg we will be able to support logical geometries which can not be inferred by SeaBIOS itself. (For instance: A 8GB virtio-blk hard drive which was originally created as an IDE and must report LCHS of */32/63 for its operating system to function will always break under SeaBIOS since a LARGE/LBA translation will be used, causing the number of reported logical heads to be > 32.) The only LCHS paravirtual interface available at the moment is for IDE disks (rtc_read() in get_translation()) and it's limited to a maximum of 4 disks (this code existed in SeaBIOS's translation function before SCSI and VirtIO were even introduced). This is why we create a new interface which allows passing LCHS information per hdd. As mentioned, this interface may be easily extended to support more information per hdd. Boot device information is serialized in the following way: * struct_size (u32) * device path (sz string) * device information (struct_size) ... * device path (sz string) * device information (struct_size) Device path is a null terminated string in the "Open Firmware" device path format, the same path as used in bootorder. Reviewed-by: Karl Heubaum <karl.heubaum@oracle.com> Reviewed-by: Arbel Moshe <arbel.moshe@oracle.com> Signed-off-by: Sam Eiderman <shmuel.eiderman@oracle.com> Message-Id: <20190612093704.47175-2-shmuel.eiderman@oracle.com> Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
2019-05-17bootmenu: add support for more than 9 entriesGerd Hoffmann1-18/+42
10th and following entries can be selected using letters. Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
2019-05-17add get_keystroke_full() helperGerd Hoffmann1-2/+14
Switch get_raw_keystroke() to return ax instead of ah, so it returns both scan code and ascii code of the key pressed. Add get_keystroke_full() function which passes up ax to the caller. The get_keystroke() function continues to return the scancode only like it did before. It is a thin wrapper around get_keystroke_full() now though. Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
2018-10-05pretty boot menu entry for cdrom drivesGerd Hoffmann1-0/+10
Show the volume label of bootable cdroms. Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
2017-09-27boot: Rename drive_g to driveKevin O'Connor1-8/+8
The 'struct drive_s' pointer is a 32bit pointer (and boot.c code is only compiled in 32bit mode), so avoid using the "_g" suffix on the pointer. Tested-by: Paolo Bonzini <pbonzini@redhat.com> Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2017-07-25usb: add hub portmapGerd Hoffmann1-3/+10
Allow usb hubs to map (software) ports to physical ports via op callback. This is needed to make bootorder work in case there isn't a simple linear mapping. Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
2017-04-25boot: Increase description size in boot menuKevin O'Connor1-1/+1
Increase the boot menu description size so that menu items up to 80 characters display without truncation. Reported-by: Rene Shuster <rene.shuster@bcsemail.org> Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2016-02-03pci: Split low-level pci code from higher-level 'struct pci_device' codeKevin O'Connor1-0/+1
Split pci.c into pci.c and pcidevice.c. The low-level code that interacts directly with the PCI devices remains in pci.c, while functions dealing with the higher level pci_device cache move to pcidevice.c. Only pci.c is needed in 16bit mode. Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2016-01-07tpm: Rework the assertion of physical presenceStefan Berger1-2/+2
Rework the assertion of physical presence by calling assert_physical_presence in tpm_setup. This call will assert physical presence if SW assertion is possible or by checking whether HW physical presence is enabled. The TPM menu will only be shown if physical presence is asserted or HW physical presence is enabled after this call. Signed-off-by: Stefan Berger <stefanb@linux.vnet.ibm.com>
2015-12-20tpm: Add a menu for TPM configurationStefan Berger1-1/+8
This patch adds an new menu entry to the main menu. This menu item enables the user to enter a TPM control menu which allows control of those aspects of the TPM's state that can only be controlled while in the firmware and while physical presence can be asserted. If the machine has a TPM, the boot menu will look as follows, with the new menu item accessible by pressing the 't' key. Select boot device: 1. ata0-1: QEMU HARDDISK ATA-7 Hard-Disk (6144 MiBytes) 2. Legacy option rom 3. iPXE (PCI 00:03.0) t. TPM Menu Upon pressing t the TPM submenu will be shown: The Trusted Platform Module (TPM) is a hardware device in this machine. It can help verify the integrity of system software. The current state of the TPM is: Enabled and active Ownership has not been taken A user can take ownership of the TPM Available options are: d. Disable the TPM v. Deactivate the TPM p. Prevent installation of an owner If no change is desired or if this menu was reached by mistake, press ESC to reboot the machine. The TPM menu only shows those options that are currently accessible considering the state of the TPM. The patch adds several functions for sending those messages to the TPM required for supporting those menu items. Signed-off-by: Stefan Berger <stefanb@linux.vnet.ibm.com>
2015-07-04bootorder: Update "extra pci root" buses bootorder format to match qemuKevin O'Connor1-2/+2
The QEMU code will use the prefix "/pci@i0cf8,%x/" for devices on extra pci root buses, so change the SeaBIOS code to match that. Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2015-06-01Add 'measurement' code to the BIOSStefan Berger1-0/+6
This patch adds invocations of functions that measure various parts of the code and data through various parts of the BIOS code. It follows TCG specifications on what needs to be measured. It also adds the implementation of the called functions. Reference for what needs to be measured can be found in specs found here: http://www.trustedcomputinggroup.org/resources/pc_client_work_group_specific_implementation_specification_for_conventional_bios The first measurements are done once the ACPI tables have been initialized. Once booted into Linux, the current measurements produce the following logs which can be found in /sys/kernel/security/tpm0/ascii_bios_measurements. The below log also shows measurements from trusted grub. 1 3fb240d2a04085a4e84f81e4398e070ed5a18163 06 [SMBIOS] 2 cc812353fc277c1fab99e0b721752a1392984566 06 [Option ROM] 2 9dbd87163112e5670378abe4510491259a61f411 05 [Start Option ROM Scan] 2 6f74e357331b8dee11bbad85f27bc66cb873106c 06 [Option ROM] 2 5626eb7ac05c7231e46d7461e7d3839b03ae9fad 06 [Option ROM] 4 c1e25c3f6b0dc78d57296aa2870ca6f782ccf80f 05 [Calling INT 19h] 0 d9be6524a5f5047db5866813acf3277892a7a30a 04 [] 1 d9be6524a5f5047db5866813acf3277892a7a30a 04 [] 2 d9be6524a5f5047db5866813acf3277892a7a30a 04 [] 3 d9be6524a5f5047db5866813acf3277892a7a30a 04 [] 4 d9be6524a5f5047db5866813acf3277892a7a30a 04 [] 5 d9be6524a5f5047db5866813acf3277892a7a30a 04 [] 6 d9be6524a5f5047db5866813acf3277892a7a30a 04 [] 7 d9be6524a5f5047db5866813acf3277892a7a30a 04 [] 4 8cf2fe6c87d4d0b2998a43da630292e6d85ee8b6 05 [Booting BCV device 80h (HDD)] 4 5dff94459a3e2d13a433ef94afdc306144565bf7 0d [IPL] 5 d1b33afde65ad47502332af957c60f20c84c1edc 0e [IPL Partition Data] 4 487ce764b527ccad17f1d04243d0136fa981e6c4 0d [IPL] 4 91d285e4dead566324c8938a3cc75803f462d9a1 0d [IPL] 4 8ba79ac98bb491524fef29defc724daaf6263d35 0d [IPL] 4 c591c15b82e4ff30e7383a4ff1ef3b41b38521ac 06 [] 4 8cdc27ec545eda33fbba1e8b8dae4da5c7206972 04 [Grub Event Separator] 5 8cdc27ec545eda33fbba1e8b8dae4da5c7206972 04 [Grub Event Separator] 5 e8673b9e14b02dc12d8ccfd0176bca7a3de7fc3c 0e [IPL Partition Data] 5 0163e375a0af7525c5dac1a8e74b277359e40d1d 1105 [] 8 4be30f67c3d48ab7f04d9c0fd07f06d4c68379be 1205 [] 8 54c83965978de9708d026016ecb0e70660e04388 1305 [] 5 2431ed60130faeaf3a045f21963f71cacd46a029 04 [OS Event Separator] 8 2431ed60130faeaf3a045f21963f71cacd46a029 04 [OS Event Separator] 8 f3973cae05d6e2055062119d6e6e1e077b7df876 1005 [] Signed-off-by: Stefan Berger <stefanb@linux.vnet.ibm.com>
2015-03-16boot: switch default menu key to ESCPaolo Bonzini1-2/+2
On some platforms, F12 may be hard to access; for example, on OS X machines F9-F12 have been intercepted by the OS for a long time, and on newer OS X releases function keys are basically gone for good. Which keys are and are not available depends on the client, not on the server, but only function keys are usually trapped by terminals. Hence, using ESC for the boot menu avoids the problems associated with F12. Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
2015-03-16boot.c: delay exiting boot if menu key is ESCPaolo Bonzini1-1/+7
If the menu key is ESC, do not restart boot unless 1.5 seconds have passed. Otherwise users (trained by years of repeatedly hitting keys to enter the BIOS) will end up hitting ESC multiple times and immediately booting the primary boot device. Suggested-by: Matt DeVillier <matt.devillier@gmail.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
2014-08-15boot: Change ":rom%d" boot order rom instance to ":rom%x"Kevin O'Connor1-2/+2
Use hex numbers for the rom instance count in boot order open firmware device naming. The ":rom" suffix isn't part of a standard and it's highly unlikely any rom would have 10 or more drives on it, but this change makes the code more similar to the numbering of other boot order devices. Signed-off-by: Kevin O'Connor <kevin@koconnor.net> Reviewed-by: Markus Armbruster <armbru@redhat.com>
2014-08-15boot: Fix boot order for SCSI target, lun > 9Markus Armbruster1-2/+2
We identify devices by their Open Firmware device paths. The path component for the logical unit on a bus is incorrect: bootprio_find_scsi_device() and bootprio_find_usb() format target (a.k.a. SCSI ID) and lun in decimal, while QEMU uses hexadecimal. Bootorder list entries with target, lun > 9 aren't found (lucky case), or attributed to the wrong logical unit (unlucky case). The relevant spec[*] agrees with QEMU (and OVMF, for that matter). Change %d to %x. No actual impact on USB, because QEMU only uses LUN 0 there. RHBZ: https://bugzilla.redhat.com/show_bug.cgi?id=1096560 [*] Open Firmware Recommended Practice: SCSI-3 Parallel Interface, Version 1, Section 3.1 Physical Address Formats and Representations http://www.openfirmware.org/1275/practice/spi/spi1_0.ps IEEE Standard for Boot (Initialization Configuration) Firmware: Core Requirements and Practices, IEEE Std 1275-1994, Annex E SCSI host adapter package class, section E.2.1 Physical address formats and representations Signed-off-by: Markus Armbruster <armbru@redhat.com>
2014-06-06Abstract reset call (and possible 16bit mode switch) into reset() function.Kevin O'Connor1-4/+1
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2014-06-04cdemu: store internal cdemu fields in standard "el-torito" spec format.Kevin O'Connor1-1/+1
Store the fields necessary to export the "el-torito" spec information directly in an internal copy of the "el-torito" struct. This simplifies the interface and obviates the need for an internal home grown struct with the same info. Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2014-02-17Enhance nullTrailingSpace() so that it can also skip leading spaces.Kevin O'Connor1-1/+1
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2014-01-22debug: Only call serial_debug_preinit() at startup.Kevin O'Connor1-2/+0
The serial_debug_preinit() function disables serial interrupts so that the OS doesn't get confused by "transmit buffer empty" interrupts caused when seabios writes to the serial port. It's unnecessary paranoia to keep rechecking that interrupts are disabled. Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2013-12-12change boot order load log levelGerd Hoffmann1-2/+2
Having loadBootOrder and find_prio print at different log levels (3 + 1) doesn't make that much sense, to trouble-shoot bootorder issues it is very useful to have both. Lets use loglevel 1. Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
2013-12-04Move low-level hardware writing from output.c to new file hw/serialio.c.Kevin O'Connor1-2/+2
Avoid hardware specific code in output.c. This will reduce the amount of change needed to output.c as support for more serial hardware is added. This patch also renames some functions to improve the naming scheme. Signed-off-by: Kevin O'Connor <kevin@koconnor.net>