diff --git a/meta/recipes-core/libxml/libxml2/libxml-m4-use-pkgconfig.patch b/meta/recipes-core/libxml/libxml2/libxml-m4-use-pkgconfig.patch
new file mode 100644
index 0000000..0fc8407
--- /dev/null
+++ b/meta/recipes-core/libxml/libxml2/libxml-m4-use-pkgconfig.patch
@@ -0,0 +1,204 @@
+AM_PATH_XML2 uses xml-config which we disable through
+binconfig-disabled.bbclass, so port it to use pkg-config instead.
+
+Upstream-Status: Pending
+Signed-off-by: Ross Burton <ross.burton@intel.com>
+
+diff --git a/libxml.m4 b/libxml.m4
+index 68cd824..5fa0a9b 100644
+--- a/libxml.m4
++++ b/libxml.m4
+@@ -1,188 +1,12 @@
+-# Configure paths for LIBXML2
+-# Mike Hommey 2004-06-19
+-# use CPPFLAGS instead of CFLAGS
+-# Toshio Kuratomi 2001-04-21
+-# Adapted from:
+-# Configure paths for GLIB
+-# Owen Taylor     97-11-3
+-
+ dnl AM_PATH_XML2([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]])
+ dnl Test for XML, and define XML_CPPFLAGS and XML_LIBS
+ dnl
+-AC_DEFUN([AM_PATH_XML2],[ 
+-AC_ARG_WITH(xml-prefix,
+-            [  --with-xml-prefix=PFX   Prefix where libxml is installed (optional)],
+-            xml_config_prefix="$withval", xml_config_prefix="")
+-AC_ARG_WITH(xml-exec-prefix,
+-            [  --with-xml-exec-prefix=PFX Exec prefix where libxml is installed (optional)],
+-            xml_config_exec_prefix="$withval", xml_config_exec_prefix="")
+-AC_ARG_ENABLE(xmltest,
+-              [  --disable-xmltest       Do not try to compile and run a test LIBXML program],,
+-              enable_xmltest=yes)
+-
+-  if test x$xml_config_exec_prefix != x ; then
+-     xml_config_args="$xml_config_args"
+-     if test x${XML2_CONFIG+set} != xset ; then
+-        XML2_CONFIG=$xml_config_exec_prefix/bin/xml2-config
+-     fi
+-  fi
+-  if test x$xml_config_prefix != x ; then
+-     xml_config_args="$xml_config_args --prefix=$xml_config_prefix"
+-     if test x${XML2_CONFIG+set} != xset ; then
+-        XML2_CONFIG=$xml_config_prefix/bin/xml2-config
+-     fi
+-  fi
+-
+-  AC_PATH_PROG(XML2_CONFIG, xml2-config, no)
+-  min_xml_version=ifelse([$1], ,2.0.0,[$1])
+-  AC_MSG_CHECKING(for libxml - version >= $min_xml_version)
+-  no_xml=""
+-  if test "$XML2_CONFIG" = "no" ; then
+-    no_xml=yes
+-  else
+-    XML_CPPFLAGS=`$XML2_CONFIG $xml_config_args --cflags`
+-    XML_LIBS=`$XML2_CONFIG $xml_config_args --libs`
+-    xml_config_major_version=`$XML2_CONFIG $xml_config_args --version | \
+-           sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'`
+-    xml_config_minor_version=`$XML2_CONFIG $xml_config_args --version | \
+-           sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'`
+-    xml_config_micro_version=`$XML2_CONFIG $xml_config_args --version | \
+-           sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'`
+-    if test "x$enable_xmltest" = "xyes" ; then
+-      ac_save_CPPFLAGS="$CPPFLAGS"
+-      ac_save_LIBS="$LIBS"
+-      CPPFLAGS="$CPPFLAGS $XML_CPPFLAGS"
+-      LIBS="$XML_LIBS $LIBS"
+-dnl
+-dnl Now check if the installed libxml is sufficiently new.
+-dnl (Also sanity checks the results of xml2-config to some extent)
+-dnl
+-      rm -f conf.xmltest
+-      AC_TRY_RUN([
+-#include <stdlib.h>
+-#include <stdio.h>
+-#include <string.h>
+-#include <libxml/xmlversion.h>
+-
+-int 
+-main()
+-{
+-  int xml_major_version, xml_minor_version, xml_micro_version;
+-  int major, minor, micro;
+-  char *tmp_version;
+-
+-  system("touch conf.xmltest");
+-
+-  /* Capture xml2-config output via autoconf/configure variables */
+-  /* HP/UX 9 (%@#!) writes to sscanf strings */
+-  tmp_version = (char *)strdup("$min_xml_version");
+-  if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, &micro) != 3) {
+-     printf("%s, bad version string from xml2-config\n", "$min_xml_version");
+-     exit(1);
+-   }
+-   free(tmp_version);
+-
+-   /* Capture the version information from the header files */
+-   tmp_version = (char *)strdup(LIBXML_DOTTED_VERSION);
+-   if (sscanf(tmp_version, "%d.%d.%d", &xml_major_version, &xml_minor_version, &xml_micro_version) != 3) {
+-     printf("%s, bad version string from libxml includes\n", "LIBXML_DOTTED_VERSION");
+-     exit(1);
+-   }
+-   free(tmp_version);
+-
+- /* Compare xml2-config output to the libxml headers */
+-  if ((xml_major_version != $xml_config_major_version) ||
+-      (xml_minor_version != $xml_config_minor_version) ||
+-      (xml_micro_version != $xml_config_micro_version))
+-    {
+-      printf("*** libxml header files (version %d.%d.%d) do not match\n",
+-         xml_major_version, xml_minor_version, xml_micro_version);
+-      printf("*** xml2-config (version %d.%d.%d)\n",
+-         $xml_config_major_version, $xml_config_minor_version, $xml_config_micro_version);
+-      return 1;
+-    } 
+-/* Compare the headers to the library to make sure we match */
+-  /* Less than ideal -- doesn't provide us with return value feedback, 
+-   * only exits if there's a serious mismatch between header and library.
+-   */
+-    LIBXML_TEST_VERSION;
+-
+-    /* Test that the library is greater than our minimum version */
+-    if ((xml_major_version > major) ||
+-        ((xml_major_version == major) && (xml_minor_version > minor)) ||
+-        ((xml_major_version == major) && (xml_minor_version == minor) &&
+-        (xml_micro_version >= micro)))
+-      {
+-        return 0;
+-       }
+-     else
+-      {
+-        printf("\n*** An old version of libxml (%d.%d.%d) was found.\n",
+-               xml_major_version, xml_minor_version, xml_micro_version);
+-        printf("*** You need a version of libxml newer than %d.%d.%d. The latest version of\n",
+-           major, minor, micro);
+-        printf("*** libxml is always available from ftp://ftp.xmlsoft.org.\n");
+-        printf("***\n");
+-        printf("*** If you have already installed a sufficiently new version, this error\n");
+-        printf("*** probably means that the wrong copy of the xml2-config shell script is\n");
+-        printf("*** being found. The easiest way to fix this is to remove the old version\n");
+-        printf("*** of LIBXML, but you can also set the XML2_CONFIG environment to point to the\n");
+-        printf("*** correct copy of xml2-config. (In this case, you will have to\n");
+-        printf("*** modify your LD_LIBRARY_PATH enviroment variable, or edit /etc/ld.so.conf\n");
+-        printf("*** so that the correct libraries are found at run-time))\n");
+-    }
+-  return 1;
+-}
+-],, no_xml=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"])
+-       CPPFLAGS="$ac_save_CPPFLAGS"
+-       LIBS="$ac_save_LIBS"
+-     fi
+-  fi
++AC_DEFUN([AM_PATH_XML2],[
++  AC_REQUIRE([PKG_PROG_PKG_CONFIG])
+ 
+-  if test "x$no_xml" = x ; then
+-     AC_MSG_RESULT(yes (version $xml_config_major_version.$xml_config_minor_version.$xml_config_micro_version))
+-     ifelse([$2], , :, [$2])     
+-  else
+-     AC_MSG_RESULT(no)
+-     if test "$XML2_CONFIG" = "no" ; then
+-       echo "*** The xml2-config script installed by LIBXML could not be found"
+-       echo "*** If libxml was installed in PREFIX, make sure PREFIX/bin is in"
+-       echo "*** your path, or set the XML2_CONFIG environment variable to the"
+-       echo "*** full path to xml2-config."
+-     else
+-       if test -f conf.xmltest ; then
+-        :
+-       else
+-          echo "*** Could not run libxml test program, checking why..."
+-          CPPFLAGS="$CPPFLAGS $XML_CPPFLAGS"
+-          LIBS="$LIBS $XML_LIBS"
+-          AC_TRY_LINK([
+-#include <libxml/xmlversion.h>
+-#include <stdio.h>
+-],      [ LIBXML_TEST_VERSION; return 0;],
+-        [ echo "*** The test program compiled, but did not run. This usually means"
+-          echo "*** that the run-time linker is not finding LIBXML or finding the wrong"
+-          echo "*** version of LIBXML. If it is not finding LIBXML, you'll need to set your"
+-          echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point"
+-          echo "*** to the installed location  Also, make sure you have run ldconfig if that"
+-          echo "*** is required on your system"
+-          echo "***"
+-          echo "*** If you have an old version installed, it is best to remove it, although"
+-          echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH" ],
+-        [ echo "*** The test program failed to compile or link. See the file config.log for the"
+-          echo "*** exact error that occured. This usually means LIBXML was incorrectly installed"
+-          echo "*** or that you have moved LIBXML since it was installed. In the latter case, you"
+-          echo "*** may want to edit the xml2-config script: $XML2_CONFIG" ])
+-          CPPFLAGS="$ac_save_CPPFLAGS"
+-          LIBS="$ac_save_LIBS"
+-       fi
+-     fi
++  verdep=ifelse([$1], [], [], [>= $1])
++  PKG_CHECK_MODULES(XML, [libxml-2.0 $verdep], [$2], [$3])
+ 
+-     XML_CPPFLAGS=""
+-     XML_LIBS=""
+-     ifelse([$3], , :, [$3])
+-  fi
++  XML_CPPFLAGS=$XML_CFLAGS
+   AC_SUBST(XML_CPPFLAGS)
+-  AC_SUBST(XML_LIBS)
+-  rm -f conf.xmltest
+ ])
