Age | Commit message (Collapse) | Author | Files | Lines |
|
Enhancements:
- Initial support for 64-bit CPUs with Astro/Elroy (e.g. C3700
workstation)
- USB support (OHCI)
- better PCI support
- esp-scsi fixes from Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
Signed-off-by: Helge Deller <deller@gmx.de>
|
|
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>
|
|
Signed-off-by: Helge Deller <deller@gmx.de>
|
|
Signed-off-by: Helge Deller <deller@gmx.de>
|
|
Signed-off-by: Helge Deller <deller@gmx.de>
|
|
Signed-off-by: Helge Deller <deller@gmx.de>
|
|
Signed-off-by: Helge Deller <deller@gmx.de>
|
|
Signed-off-by: Helge Deller <deller@gmx.de>
|
|
Signed-off-by: Helge Deller <deller@gmx.de>
|
|
Signed-off-by: Helge Deller <deller@gmx.de>
|
|
Signed-off-by: Helge Deller <deller@gmx.de>
|
|
Signed-off-by: Helge Deller <deller@gmx.de>
|
|
Signed-off-by: Helge Deller <deller@gmx.de>
|
|
Signed-off-by: Helge Deller <deller@gmx.de>
|
|
If some bug happens during early bootup, the mem_cons might not have
been initialized yet. In that case use default PARISC_SERIAL_CONSOLE
to show something.
Signed-off-by: Helge Deller <deller@gmx.de>
|
|
The existing esp-scsi state machine checks for the STAT_TC bit to exit state 1
but in the case where there is no data phase, a non-DMA command is executed
which doesn't set STAT_TC. This only works because QEMU currently always sets
STAT_TC just after issuing every SCSI command.
Update the esp-scsi state machine so that in the case where there is no data
phase, we immediately execute CMD_ICCS instead of waiting for STAT_TC to be
set which will never happen with a non-DMA CMD_SELATN command.
Signed-off-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
Message-ID: <20230807065300.366070-4-mark.cave-ayland@ilande.co.uk>
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
|
|
The ESP SELATN command used to send SCSI commands from the ESP to the SCSI bus
is not a DMA command and therefore does not affect the STAT_TC bit. The only
reason this works at all is due to a bug in QEMU which (currently) always
updates the STAT_TC bit in ESP_RSTAT regardless of the state of the ESP_CMD_DMA
bit.
According to the NCR datasheet [1] the INTR_BS/INTR_FC bits are set when the
SELATN command has completed, so update the existing logic to check for these
bits in ESP_RINTR instead. Note that the read of ESP_RINTR needs to be
restricted to state == 0 as reading ESP_RINTR resets the ESP_RSTAT register
which breaks the STAT_TC check when state == 1.
This commit also includes an extra read of ESP_INTR to clear all the interrupt
bits before submitting the SELATN command to ensure that we don't accidentally
immediately progress to the data phase handling logic where ESP_RINTR bits have
already been set by a previous ESP command.
[1] "NCR 53C94, 53C95, 53C96 Advanced SCSI Controller"
NCR_53C94_53C95_53C96_Data_Sheet_Feb90.pdf
Signed-off-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
Reviewed-by: Paolo Bonzini <pbonzini@redhat.com>
Message-ID: <20230807065300.366070-3-mark.cave-ayland@ilande.co.uk>
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
|
|
The ESP FIFO is used as a buffer for DMA requests and so isn't guaranteed to
be empty in the case of SCSI errors or a mixed DMA/non-DMA request. Flush the
FIFO before sending a SCSI command to guarantee that it is correctly
positioned at the start of the FIFO.
Signed-off-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
Reviewed-by: Paolo Bonzini <pbonzini@redhat.com>
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Message-ID: <20230807065300.366070-2-mark.cave-ayland@ilande.co.uk>
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
|
|
Enhancements:
- Support for Block-TLB (BTLB) on 32-bit CPUs
Signed-off-by: Helge Deller <deller@gmx.de>
|
|
SeaBIOS has no information about the lower implementation details for
Block-TLB (or generic TLB) support, so it simply hands over the
parameters in the CPU registers provided by the operating system to the
PDC_BLOCK_TLB PDC function to QEMU.
Calling QEMU happens via a diagnostics instruction (diag 0x100) which
QEMU will respond to. Older QEMU versions without the BTLB support will
simply log that they ignored the diag instruction, and SeaBIOS will
return PDC_BAD_OPTION for this PDC call in that case.
Signed-off-by: Helge Deller <deller@gmx.de>
|
|
Fixes
- boot of HP-UX with SMP, and
- reboot of Linux and HP-UX with SMP
Enhancements:
- show qemu version in boot menu
- adds exit menu entry in boot menu to quit emulation
- allow to trace PCD_CHASSIS codes more specifically
Signed-off-by: Helge Deller <deller@gmx.de>
|
|
Signed-off-by: Helge Deller <deller@gmx.de>
|
|
Qemu currently only supports PSW_Q handling, so enable it by default.
Signed-off-by: Helge Deller <deller@gmx.de>
|
|
Get the qemu version from the fw_cfg interface and show it
during bootup.
Signed-off-by: Helge Deller <deller@gmx.de>
|
|
Do not store the boot args in the pad0 field of PAGE0.
This breaks booting HP-UX SMP kernels.
Use pad608 instead.
Signed-off-by: Helge Deller <deller@gmx.de>
|
|
Signed-off-by: Helge Deller <deller@gmx.de>
|
|
Signed-off-by: Helge Deller <deller@gmx.de>
|
|
Most important is the flushing of the TLB entries
Signed-off-by: Helge Deller <deller@gmx.de>
|
|
This allows to include the version number in the binary
header of hppa-firmware.img
Signed-off-by: Helge Deller <deller@gmx.de>
|
|
Signed-off-by: Helge Deller <deller@gmx.de>
|
|
Fixes boot of the Debian-12 installation CD-ROM
The size of the ramdisc of Debian-12 is 17123328 bytes and occupies 8361
CD-ROM sectors (of 2048 bytes each). As such the palo bootloader tries to
read 8361 sectors, which fails with DISK_RET_EBADTRACK error because the
emulated LSI SCSI driver only supports (due to hardware limitation)
reading 8192 sectors at once.
Fix it in the SeaBIOS firmware by limiting the sectors which can be read
at once to 8192-16 sectors. The palo bootloader will then simply do
additional calls to read the remaining sectors.
This firmware bug didn't show up with Debian-11 because that ramdisc
was smaller and below the 8192 sector limit.
Signed-off-by: Helge Deller <deller@gmx.de>
|
|
Fixes the serial port emulation
Qemu versions which request a SEABIOS_HPPA_VERSION < 6 have the bug that
they use the DINO UART instead of the LASI UART as serial port #0.
Staring with SEABIOS_HPPA_VERSION 6 the serial ports are now emulated as
on physical hardware, with LASI UART being serial port #0.
This patch adds a compat patch, which will use the DINO UART port
for console I/O if it detects that qemu requests a SEABIOS_HPPA_VERSION
< 6.
Signed-off-by: Helge Deller <deller@gmx.de>
|
|
Signed-off-by: Helge Deller <deller@gmx.de>
|
|
Signed-off-by: Helge Deller <deller@gmx.de>
|
|
Signed-off-by: Helge Deller <deller@gmx.de>
|
|
Add this option to avoid some warnings like:
src/tcgbios.c: In function 'tpm_interrupt_handler32':
src/tcgbios.c:1721:45: warning: taking address of packed member of 'struct bregs' may result
in an unaligned pointer value [-Waddress-of-packed-member]
Signed-off-by: Helge Deller <deller@gmx.de>
|
|
Prevent usage of the hardcoded PARISC_SERIAL_CONSOLE value and instead
check the given hpa and provide the correct serial port name.
Signed-off-by: Helge Deller <deller@gmx.de>
|
|
The structs mem_kbd and mem_cons holds the HPA of the serial ports
used for console I/O, so use those instead of hardcoding to
PARISC_SERIAL_CONSOLE.
There is no functional change with this, but now it complies to how
the values from PAGE0 should be used.
Signed-off-by: Helge Deller <deller@gmx.de>
|
|
On real hardware, Linux detects the UART which is built-into LASI as serial port #1,
and the UART which is built-into DINO as serial port #2.
But to now qemu and SeaBIOS used the UART on DINO as serial port #1,
which breaks qemu's possibility to use the "-serial" option to
pass-through host serial ports to the guest.
Fix this by swapping the addresses of PORT_SERIAL1 and PORT_SERIAL2.
Signed-off-by: Helge Deller <deller@gmx.de>
|
|
Signed-off-by: Helge Deller <deller@gmx.de>
|
|
On german keyboards, the Z key is positioned at the same location
as Y on english keyboards. German users may thus type Z instead of
Y. So this patch allows Z as synonym for Y.
Signed-off-by: Helge Deller <deller@gmx.de>
|
|
New features and fixes:
* Fixed SeaBIOS PS/2 keyboard support.
This now allows to use the qemu "-boot menu=on" option to start the
firmware boot selection menu and provide a working menu with keyboard on
serial (qemu "-nographic" option) and PS/2 keyboard (qemu "-graphic"
option) on graphical screen.
|
|
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>
|
|
lasips2_kbd_in() is used to read input from an emulated PS/2 keyboard.
Since there is no interrupt support durig PDC/IODC we need to poll the
PS/2 status flags to see if a new key was pressed. In order to be able
to poll regularily, exit the loop to read already pressed chars as soon
as possible. This can be done by calling handle_16() with register ah =
0x11 to check if keys are queued up and exit if none are available.
This patch fixes the problem that keys couldn't be read when using a
graphical output (artist graphics). This patch fixes palo and other
bootloaders to be able to use input from the emulated PS/2 keyboard.
Signed-off-by: Helge Deller <deller@gmx.de>
|
|
Add the CONSOLE_DEFAULT constant to make the decision which I/O console to use
easier to understand.
Signed-off-by: Helge Deller <deller@gmx.de>
|
|
New features and fixes:
* Fix firmware rendenzvous code to clear all pending external intrrupts
before entering the waiting loop.
* STI firmware now contains additional fonts built-in, which
can be selected with qemu command-line options:
-fw_cfg opt/font,string=1 - a HP 8x16 font
-fw_cfg opt/font,string=2 - a HP 6x13 font
-fw_cfg opt/font,string=3 - a HP 10x20 font
-fw_cfg opt/font,string=4 - a Linux 16x32 font
Signed-off-by: Helge Deller <deller@gmx.de>
|
|
Add additional fonts to STI ROM.
They can be selected with qemu command-line options:
-fw_cfg opt/font,string=1 - a HP 8x16 font
-fw_cfg opt/font,string=2 - a HP 6x13 font
-fw_cfg opt/font,string=3 - a HP 10x20 font
-fw_cfg opt/font,string=4 - a Linux 16x32 font
Signed-off-by: Helge Deller <deller@gmx.de>
|
|
Signed-off-by: Helge Deller <deller@gmx.de>
|
|
Fix the PDC rendenzvous code to clear all pending external intrrupts
before entering the waiting loop.
Without clearing them before, the CPU was waken up immediately again.
This fixes the CPU hotplug on Linux, which can be run with
chcpu -d 2 # to disable CPU2
chcpu -e 2 # to wake up CPU2
Signed-off-by: Helge Deller <deller@gmx.de>
|
|
New features and fixes:
* Allow up to 16 CPUs
* Add TOC button support:
To trigger a TOC, execute "nmi" in the qemu monitor (Ctrl-A C)
* New opt/hostid fw_cfg option to change hostid:
-fw_cfg opt/hostid,string=334455
* Add opt/console fw_cfg option to select default console:
-fw_cfg opt/console,string=serial
-fw_cfg opt/console,string=graphics
* Add Linux TER16x32 font to STI firmware:
-fw_cfg opt/font,string=2
* Leave IRQs disabled after rendevouz
Signed-off-by: Helge Deller <deller@gmx.de>
|