Thu 30 Sep 2010 03:16:24 PM UTC, original submission:
Hello,
I'm new here so please bear with me. I work for HP third level support and I came here to file a new bug.
Description:
Our HP Integrated Lights Out 2 (iLO2) product contains a virtual UART that present itself to the host server as a regular COM port. iLO2 firmware has special code that allows customers to open Telnet or SSH session to iLO2 then, iLO2 would forward all the traffic back and forth to the server via this virtual serial port.
The issue we have with any Grub version is related to fact that the timeout value inside the serial_hw_put() function is way too short for iLO2.
I explain why; Since iLO2 UART is virtual, baudrate for us is meaningless. As soon as Grub writes one byte to the iLO2 Virtual UART TX register, iLO2 gets the interrupt, iLO2 ISR reads the byte and stores it in a buffer. The UART_EMPTY_TRANSMITTER bit gets automatically set whenever the ISR reads the character from the UART. But this causes Grub to come back and write the next byte very quickly. The process repeats and iLO2 incoming buffer gets full very fast.
Once iLO2 buffer gets full, iLO2 will hold the UART_EMPTY_TRANSMITTER bit low waiting for the buffer to be processed and all the data gets sent via the network to the Telnet/SSH client.
But, if the network connection is slow or the data we have to send is too much then, iLO2 holds the UART_EMPTY_TRANSMITTER bit low for too long, Grub times out and Grub begins dropping characters.
We have increased our buffer size as a workaround but, I think Grub needs to increase the timeout inside serial_hw_put() a whole lot.
How to reproduce:
- Get an HP ProLiant server with iLO2 (Any G5 or G6 server)
- Upgrade iLO2 firmware to version 2.01
- Set up Grub to use the Virtual Serial Port (Default is COM2 but, this can be changed in ROM BIOS)
- Add at least 10 menu entries in GRUB in order to make it scroll when navigating. This makes GRUB write lots of data to the port.
- SSH into iLO2, log in then type VSP
- Reboot server and wait for GRUB to show up.
- You should see characters being lost while navigating through the menu.
|