[Skiboot] [PATCH] Revert "fsp/console: Allocate irq for each hvc console"
Samuel Mendoza-Jonas
sam at mendozajonas.com
Wed Nov 23 17:03:22 AEDT 2016
On Wed, 2016-11-23 at 16:52 +1100, Samuel Mendoza-Jonas wrote:
> On Tue, 2016-11-22 at 10:49 +0530, Pridhiviraj Paidipeddi wrote:
> > This reverts commit 583c8203dcb26b42cea81e4734ea926dae05dbb9.
>
> Stewart, please don't merge this yet.
> Without the patch to add irqs for hvc consoles, we'll get the original
> lockup problem in Linux 4.2+ that this aimed to solve. We'll need to
> work out something to make older kernels happy.
Ah as I page this back into my brain we should be saved by commit fd6b71fc
which ignores unresponsive consoles (eg. hvc1). Still, without this patch
host serial will be unusable on Firenze systems.
>
> >
> > Below is the WARNING in pre 4.2 linux kernels which is raised in firenze
> > systems due to interrupts mapping failure.
> >
> > [ 0.947741] irq: irq-62==>hwirq-0x3e mapping failed: -22
> > [ 0.947793] ------------[ cut here ]------------
> > [ 0.947838] WARNING: at kernel/irq/irqdomain.c:485
> >
> > So this commit 583c8203dcb26b42cea81e4734ea926dae05dbb9 is causing
> > the above kernel WARNING(found by git-bisect).
> >
> > Signed-off-by: Pridhiviraj Paidipeddi <ppaidipe at linux.vnet.ibm.com>
> > ---
> > hw/fsp/fsp-console.c | 26 +++++---------------------
> > 1 file changed, 5 insertions(+), 21 deletions(-)
> >
> > diff --git a/hw/fsp/fsp-console.c b/hw/fsp/fsp-console.c
> > index 0080d73..5e27197 100644
> > --- a/hw/fsp/fsp-console.c
> > +++ b/hw/fsp/fsp-console.c
> > @@ -55,7 +55,6 @@ struct fsp_serial {
> > struct fsp_serbuf_hdr *out_buf;
> > struct fsp_msg *poke_msg;
> > u8 waiting;
> > - u64 irq;
> > };
> >
> > #define SER_BUFFER_SIZE 0x00040000UL
> > @@ -194,7 +193,6 @@ static size_t fsp_write_vserial(struct fsp_serial *fs, const char *buf,
> > #ifndef DISABLE_CON_PENDING_EVT
> > opal_update_pending_evt(OPAL_EVENT_CONSOLE_OUTPUT,
> > OPAL_EVENT_CONSOLE_OUTPUT);
> > - opal_update_pending_evt(fs->irq, fs->irq);
> > #endif
> > return len;
> > }
> > @@ -467,7 +465,6 @@ static bool fsp_con_msg_vt(u32 cmd_sub_mod, struct fsp_msg *msg)
> > lock(&fsp_con_lock);
> > opal_update_pending_evt(OPAL_EVENT_CONSOLE_INPUT,
> > OPAL_EVENT_CONSOLE_INPUT);
> > - opal_update_pending_evt(fs->irq, fs->irq);
> > unlock(&fsp_con_lock);
> > }
> > return true;
> > @@ -707,10 +704,8 @@ static int64_t fsp_console_read(int64_t term_number, int64_t *length,
> > }
> > }
> > }
> > - if (!pending) {
> > - opal_update_pending_evt(fs->irq, 0);
> > + if (!pending)
> > opal_update_pending_evt(OPAL_EVENT_CONSOLE_INPUT, 0);
> > - }
> >
> > unlock(&fsp_con_lock);
> >
> > @@ -746,14 +741,11 @@ void fsp_console_poll(void *data __unused)
> >
> > if (!fs->open)
> > continue;
> > - if (sb->next_out == sb->next_in) {
> > - opal_update_pending_evt(fs->irq, 0);
> > + if (sb->next_out == sb->next_in)
> > continue;
> > - }
> > - if (fs->log_port) {
> > + if (fs->log_port)
> > __flush_console(true);
> > - opal_update_pending_evt(fs->irq, 0);
> > - } else {
> > + else {
> > #ifdef OPAL_DEBUG_CONSOLE_POLL
> > if (debug < 5) {
> > prlog(PR_DEBUG,"OPAL: %d still pending"
> > @@ -918,7 +910,7 @@ void fsp_console_reset(void)
> > void fsp_console_add_nodes(void)
> > {
> > unsigned int i;
> > - struct dt_node *consoles, *opal_event;
> > + struct dt_node *consoles;
> >
> > consoles = dt_new(opal_node, "consoles");
> > dt_add_property_cells(consoles, "#address-cells", 1);
> > @@ -943,14 +935,6 @@ void fsp_console_add_nodes(void)
> > "#write-buffer-size", SER_BUF_DATA_SIZE);
> > dt_add_property_cells(fs_node, "reg", i);
> > dt_add_property_string(fs_node, "device_type", "serial");
> > -
> > - fs->irq = opal_dynamic_event_alloc();
> > - dt_add_property_cells(fs_node, "interrupts", ilog2(fs->irq));
> > -
> > - opal_event = dt_find_by_name(opal_node, "event");
> > - if (opal_event)
> > - dt_add_property_cells(fs_node, "interrupt-parent",
> > - opal_event->phandle);
> > }
> > }
> >
>
> _______________________________________________
> Skiboot mailing list
> Skiboot at lists.ozlabs.org
> https://lists.ozlabs.org/listinfo/skiboot
More information about the Skiboot
mailing list