On Thu, Jan 16, 2014 at 03:07:21PM -0500, Anthony DeRobertis wrote:
> On 01/16/2014 01:21 PM, Neil Horman wrote:
> >Yes, What I would like to see is your backout patch removed, and the the
> >following tests preformed:
> >
> >1) VT-D off in bios
> >2) VT-D on in bios and nointremap specified on the command line
> >3) VT-D on in bios and nointremap _not_ specified on the command line
> >
> >If I could see the boot logs for all of those that would be helpful.  What 
> >would
> >be particularly helpful is to know if test (2) results in the problem
> >reproducing.  If it does that suggests our ability to disable interrupt
> >remapping in the kernel is somehow ineffective on your system.
> 
> (2) results in the problem reproducing. To be clear, all three tests
> have been done without my patch applied. They were built from:
> 
> master          a6da83f Merge branch 'merge' of 
> git://git.kernel.org/pub/scm/linux/kernel/git/benh/powerpc
> 
> 
> To get the dmesg for (1) and (3), I booted into single user, and
> didn't go any further. (2) I first booted to single user, but then
> continued on—that's why you'll see the much later timestamp loading
> tun, etc.
> 

So, something just doesn't ring true here.  In test 2, you specified nointremap
on the kernel command line, which is good.  But specifying that on the kernel
command line sets disable_irq_remap=1.  In intel_irq_remapping_supported, the
code reads as follows:

static int __init intel_irq_remapping_supported(void)
{
        struct dmar_drhd_unit *drhd;

        if (disable_irq_remap)
                return 0;
        if (irq_remap_broken) {
                printk(KERN_WARNING
                        "This system BIOS has enabled interrupt remapping\n"
                        "on a chipset that contains an erratum making that\n"
                        "feature unstable.  To maintain system stability\n"
                        "interrupt remapping is being disabled.  Please\n"
                        "contact your BIOS vendor for an update\n");
                add_taint(TAINT_FIRMWARE_WORKAROUND, LOCKDEP_STILL_OK);
                disable_irq_remap = 1;
                return 0;
        }
...

If disable_irq_remap had been set by nointremap, that function should have
returned immediately, but in test 2 you got the "This system BIOS.." warning,
indicating that disable_irq_remap was not set.  It seems to me something is
wrong with your kernel build.  I'd suggest confirming this (mis)-behavior by
adding a printk to the function setup_nointremap, indicating the value
disable_irq_remap is getting set to.  I would also add a printk to the start of
intel_irq_remapping_supported to print out the value of disable_irq_remap again,
to ensure it hasn't changed.  That should give us some additional clues as to
whats going on.

Regards
Neil

_______________________________________________
iommu mailing list
[email protected]
https://lists.linuxfoundation.org/mailman/listinfo/iommu

Reply via email to