Merge branches 'x86/early-printk', 'x86/microcode' and 'core/objtool' into x86/urgent, to pick up simple topic branches
Signed-off-by: Ingo Molnar <mingo@kernel.org>
This commit is contained in:
@@ -666,8 +666,8 @@ static ssize_t pf_show(struct device *dev,
|
||||
}
|
||||
|
||||
static DEVICE_ATTR_WO(reload);
|
||||
static DEVICE_ATTR(version, 0400, version_show, NULL);
|
||||
static DEVICE_ATTR(processor_flags, 0400, pf_show, NULL);
|
||||
static DEVICE_ATTR(version, 0444, version_show, NULL);
|
||||
static DEVICE_ATTR(processor_flags, 0444, pf_show, NULL);
|
||||
|
||||
static struct attribute *mc_default_attrs[] = {
|
||||
&dev_attr_version.attr,
|
||||
|
@@ -213,8 +213,9 @@ static unsigned int mem32_serial_in(unsigned long addr, int offset)
|
||||
* early_pci_serial_init()
|
||||
*
|
||||
* This function is invoked when the early_printk param starts with "pciserial"
|
||||
* The rest of the param should be ",B:D.F,baud" where B, D & F describe the
|
||||
* location of a PCI device that must be a UART device.
|
||||
* The rest of the param should be "[force],B:D.F,baud", where B, D & F describe
|
||||
* the location of a PCI device that must be a UART device. "force" is optional
|
||||
* and overrides the use of an UART device with a wrong PCI class code.
|
||||
*/
|
||||
static __init void early_pci_serial_init(char *s)
|
||||
{
|
||||
@@ -224,17 +225,23 @@ static __init void early_pci_serial_init(char *s)
|
||||
u32 classcode, bar0;
|
||||
u16 cmdreg;
|
||||
char *e;
|
||||
int force = 0;
|
||||
|
||||
|
||||
/*
|
||||
* First, part the param to get the BDF values
|
||||
*/
|
||||
if (*s == ',')
|
||||
++s;
|
||||
|
||||
if (*s == 0)
|
||||
return;
|
||||
|
||||
/* Force the use of an UART device with wrong class code */
|
||||
if (!strncmp(s, "force,", 6)) {
|
||||
force = 1;
|
||||
s += 6;
|
||||
}
|
||||
|
||||
/*
|
||||
* Part the param to get the BDF values
|
||||
*/
|
||||
bus = (u8)simple_strtoul(s, &e, 16);
|
||||
s = e;
|
||||
if (*s != ':')
|
||||
@@ -253,7 +260,7 @@ static __init void early_pci_serial_init(char *s)
|
||||
s++;
|
||||
|
||||
/*
|
||||
* Second, find the device from the BDF
|
||||
* Find the device from the BDF
|
||||
*/
|
||||
cmdreg = read_pci_config(bus, slot, func, PCI_COMMAND);
|
||||
classcode = read_pci_config(bus, slot, func, PCI_CLASS_REVISION);
|
||||
@@ -264,8 +271,10 @@ static __init void early_pci_serial_init(char *s)
|
||||
*/
|
||||
if (((classcode >> 16 != PCI_CLASS_COMMUNICATION_MODEM) &&
|
||||
(classcode >> 16 != PCI_CLASS_COMMUNICATION_SERIAL)) ||
|
||||
(((classcode >> 8) & 0xff) != 0x02)) /* 16550 I/F at BAR0 */
|
||||
return;
|
||||
(((classcode >> 8) & 0xff) != 0x02)) /* 16550 I/F at BAR0 */ {
|
||||
if (!force)
|
||||
return;
|
||||
}
|
||||
|
||||
/*
|
||||
* Determine if it is IO or memory mapped
|
||||
@@ -289,7 +298,7 @@ static __init void early_pci_serial_init(char *s)
|
||||
}
|
||||
|
||||
/*
|
||||
* Lastly, initialize the hardware
|
||||
* Initialize the hardware
|
||||
*/
|
||||
if (*s) {
|
||||
if (strcmp(s, "nocfg") == 0)
|
||||
|
Reference in New Issue
Block a user